设计模式学习笔记--工厂设计模式

工厂方法设计模式

简单工厂方法设计模式

简单工厂设计模式可以看作工厂方法设计模式的简化版。
有三个组件
1.工厂类:负责生产实际对象实例
2.接口/抽象类:负责定义接口
3.子类:负责实现具体逻辑
需要创建子类对象时,不需要自己new一个对象,将想要创建哪个子类对象的告诉工厂,由工厂生产。
优点:将创建对象步骤交给工厂类,不需要自己创建对象。
缺点:工厂类违反了开闭原则,即对扩展开放,对修改封闭。

工厂方法设计模式

在工厂方法设计模式中,一个工厂只对应一个子类,即一个工厂只生产一个商品。
有四个组件
1.工厂类:负责生产实际对象实例
2.接口/抽象类:负责定义接口
3.子类:负责实现具体逻辑
4.抽象工厂类:负责定义工厂的接口
在需要具体子类时,先创建出工厂类,在调用工厂类的方法创建出具体子类。
优点:将创建交给工厂,同时需要增加子类时不需要改变工厂类,只需要增加一个抽象工厂类即可。
缺点:一个子类就需要一个工厂类,会出现大量工厂对象。
共同缺点及解决方法无论使用以上哪种工厂方式需要创建类的判断逻辑修改都不能避免。解决办法参考Spring,可以采用反射加配置文件的方式解决。

抽象工厂模式

抽象工厂设计模式中,一个工厂可以生产一类产品。
1.工厂类:负责生产实际对象实例
2.接口/抽象类:负责定义接口
3.子类:负责实现具体逻辑
4.抽象工厂类:负责定义工厂的接口
我们定义多个接口,每个接口代表不同公司的产品,不同公司会有相似的产品。例如格力和海尔都生产空调和洗衣机,此时我们定义两个工厂:生产洗衣机的工厂、生产空调的工厂。定义两个抽象类,即格力和海尔。通过类别创建工厂,再通过具体品牌创建对象。
优缺点同上,在工厂方法模式的基础上又抽象的一层。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值