首页 > 其他 > 详细

初识设计模式-创建型之工厂模式

时间:2020-10-27 18:32:50      阅读:27      评论:0      收藏:0      [点我收藏+]

      首先我们想象一个场景:身为上班族的我们午休时间到了,该去快餐店补充能量了 ,比如说顺旺基,老娘舅等连锁品牌是上班族的首选。

      基于这个场景下,我们如何来运用工厂模式呢?首先我们可以想到需要两个工厂类——ShunFactory,LaoFactory,这两个工厂都继承叫HotelFactory的接口类,里面有一个CreatFood的抽象方法,上端的就不需要关注具体的实现,Lao,Shun这两个类同时继承叫Show的抽象类,这个抽象定义一个ShowFood的抽象方法。介绍到此,上代码

 

技术分享图片
 public interface HotelFactory
    {
        public abstract Food CreatFood();
    }
    public class LaoFactory : HotelFactory
    {
        public virtual Food CreatFood()
        {
            return new Lao();
        }
    }
    public class ShunFactory : HotelFactory
    {
        public virtual Food CreatFood()
        {
            return new Shun();
        }
    }
    public abstract class Food
    {
        public abstract void ShowFood();
    }
    public class Lao : Food
    {
        public override void ShowFood()
        {
            Console.WriteLine("这是我老娘舅的菜品:红烧鱼");
        }
    }
    public class Shun : Food
    {
        public override void ShowFood()
        {
            Console.WriteLine("这是我顺旺基的菜品:霸王别鸡");
        }
    }
View Code

       技术分享图片

      我们可以看到我们在上端使用的时候只是调用了CreatFood方法,对象的创建过程我们是感知不到的,如果我们想新增一个快餐店 我们只需要新增一个自身的工厂类和展示菜品的类继承Food就行了,不需要修改其他代码,而使用简单工厂的时候这个时候就要增加case,这就不符合单一职责,加强了耦合性,而且修改了类得重新测试,你不能不确保修改了类一定不报错,这就增加了测试的成本,而我们使用工厂方法,不涉及修改其他类,这符合开闭原则,对扩展开放,对修改关闭,这样程序的稳定性就有保障,我们来总结下工厂方法的优缺点:

 

 

      优点:

            1: 符合开闭原则,对扩展开放,对修改关闭,程序的稳定性有保障

      缺点:

             1:我们创建对象的过程变得复杂了,不能直接new

 

      

初识设计模式-创建型之工厂模式

原文:https://www.cnblogs.com/wshnzxj/p/13885732.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!