三个工厂模式的分析

    学习设计模式很长时间了,一直想把这些模式进行分类和总结,却不知道从哪里开始。发现工厂模式是一个系列,就从三个工厂模式说起吧。

    首先来说简单工厂模式,以设计计算器为例分析这个模式,简单工厂模式抽象出了一个业务逻辑的父类,父类定义了定义了属性和方法,子运算类只需要重写运算方法即可,客户端负责输入和输出数据,运算工厂类决定实例化对象。

简单工厂类结构图:

         简单工厂实现了业务逻辑和界面逻辑的分离,但是如果我们需要增加或减少计算器功能,需要修改运算工厂类,这不符合开放封闭原则,这个模式要慎重使用。

         前边的简单工厂模式因为运算工厂类不符合开放封闭原则,工厂方法类很好的解决了这个问题。还是以计算器为例,在简单工厂模式的基础上,我们来改进这个模式,我们把运算工厂的选择方法写成工厂类,然后抽象出一个公共接口,由各个子工厂类实现这个接口,判断应该实例化哪个对象。

工厂方法类结构图:

        工厂方法模式克服了简单工厂违背开放封闭原则的缺点,又保持了封装对象创建过程的优点。它的缺点是每增加一个产品,需要增加一个产品工厂的类,增加了额外的开发量,并且工厂方法没有避免选择判断的问题,只是把这个任务交给了客户端。

        抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。抽象工厂的优点是便于交换产品系列,并且让具体的创建实例过程与客户端分离。

抽象工厂类结构图:

          抽象工厂也没有解决选择判断的问题,这里我们引入反射方法,就是把选择判断做成变量来处理,就是将程序选择判断由编译时转为运行时处理。

         软件开发中,设计模式的使用是把双刃剑,如果应用得当,可以帮助我们更好的解决问题,如果处理不当,将会使软件开发和维护更为棘手。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值