简单工厂模式

        最近刚刚开始学习程杰老师的大话设计模式,首先是对面向对象基础知识的补习,例如类、封装、继承、多态、接口和事件等概念;其次就开始学习第一个设计模式--简单工厂模式了。

        开始学习,是由小菜面试受挫引出的,基本一整章都是在说代码的规范化,包括可维护、可复用、可扩展和灵活性等。比较纳闷,设计模式怎么在说这些呢?上网查了资料才得到解释:

        简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些。因为它至少不是Gof23种设计模式之一。但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导吧。

        那么究竟什么是简单工厂模式呢?

        我的理解是:用一个单独的工厂类来创建其他类的实例。

        简单工厂模式的主要组成由三种:

                1.工厂(Creator)角色(指概念中的工厂类)

                    简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。

               2.抽象产品(Product)角色(指概念中的其他类)

                    简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

               3.具体产品(Concrete Product)角色(指概念中的实例)

                    是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

         示例代码:

public class OperationFactory     //简单运算工厂类

        {

            public Operation CreateOperate(string operate)  //返回Operation类型的CreateOperate方法语句

            {

                Operation oper = null;

                switch (operate)

                {

                    case "+":

                        oper = new OperateAdd();

                        break ;

                    case "-":

                        oper = new OperateSub();

                        break;

                    case "*":

                        oper = new OperateMul();

                        break;

                    case "/":

                        oper = new OperateDiv();

                        break;

                }

                return oper;

            }

 

             客户端的代码是:

Operation oper;

oper = OperationFactory.CreateOperate("+");

oper.NumberA=1;

oper.NumberB=2;

double result=oper.GetResult();

        至此,代码结束了。通过以上的代码,我们可以发现简单工厂模式其实也是有利也有弊的。

        利:

          1.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,明确了各自的职责和权利,有利于整个软件体系结构的优化;

             2.由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则;

             3.将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。

      弊:

             1.当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利。

        建议使用情况:

             1.工厂类负责创建的对象比较少;

             2.客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;

             3.由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。

        简单工厂模式虽不是23种设计模式中的一种,但是它对于编程人员的代码规范还是有一定启迪的。我们不能只满足于写完代码运行结果正确就完事,编程是一门技术,更是一门艺术,写出可维护、可复用、可扩展和灵活性好的代码,应是我们不断地追求。

 

 

 

 

 

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值