关于工厂方法模式与抽象工厂模式的讨论

关于工厂方法模式与抽象工厂模式的讨论

1. 工厂方法模式的设计与可扩展性

将工厂层次类的超类设计为一个抽象类,并且在该类中包含一个静态方法getBuildingFactory(type:String)。由客户类直接调用该方法,并且传入一个参数值。根据该参数,由工厂超类决定创建一个具体的工厂子类对象,并且返回给客户类。之后客户类利用该工厂子类对象产生产品子类的对象。如果产品类的对象的创建需要动态的由客户类提供参数,则可以在工厂子类的构造方法的参数中传入。这样做的好处是,将创建工厂类对象的条件语句交给了工厂超类。而在客户类中,不包含创建工厂子类对象的条件语句。在可扩展性方面,修改产品类的时候,不需要修改工厂类和客户类;而需要增加一个新的产品子类的时候,只需要响应的增加一个工厂子类即可,对原有的产品类代码和工厂类代码没有任何影响。当然,如果客户程序需要使用新增加类的时候,需要修改工厂超类的getBuildingFactory(type:String)方法。

2. 抽象工厂模式的设计与可扩展性

(1)如果需要增加ProductA3 和ProductB3,则工厂类阶层类需要增加ConcreteCreator3。在此情况下,抽象工厂模式符合开闭原则。
抽象工厂模式——符合开闭原则:
在这里插入图片描述
(2)如果要增加一个新产品层次类ProductC,则必须在每个工厂实类中增加方法+getObjC。在此情况下,抽象工厂模式不符合开闭原则。
抽象工厂模式——不符合开闭原则:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值