[设计模式] ------ 对比总结:简单工厂模式、工厂方法模式、抽象工厂模式

三个概念:

简单工厂模式:就是一个简单的工厂类,根据不同的入参类型,返回不同的父类引用的子类对象。
工厂方法模式:就是将生成哪个子类对象的过程,延迟到工厂子类实现,工厂父类只定义接口。
抽象工厂模式:就是在工厂方法模式的基础上,将使用哪个工厂子类的逻辑,再使用简单工厂的模式生成。

互相关系

工厂方法模式,就是对简单工厂模式的改进。
抽象工厂模式,就是对工厂方法的改进。

优缺点

简单工厂模式,就是简单,但不符合开闭原则(新增类,需要修改工厂类)

为了解决简单工厂模式的开闭原则,出现了工厂方法模式。
工厂方法模式,新增类不需要修改工厂类,但可能需要新增对应的工厂类。而且多个工厂类之间,没有太多联系,不好管理。

抽象工厂模式,用简单工厂模式的套路管理了工厂方法模式的多个工厂类。但缺点就是不简单了,想简单点,就用简单工厂模式吧。

可以看出,这三个工厂模式,按照顺序,每个模式都是为了解决上一个模式的问题,但同时又有了新的问题。

举个不太恰当但很形象的例子:

背景是乙方向甲方提供一份项目的一个模块的设计。

一开始,乙方说用简单工厂模式,甲方说不好。
然后乙方改进后,说用工厂方法模式吧,甲方犹豫了一会说,觉得还能更好。
然后乙方又改进,说那就用抽象工厂模式吧,甲方看了半天,点点头说,好是好,就是有点复杂,后期怕是不好维护。

最终,甲方使用了第一版的简单工厂模式。

参考三个工厂设计模式的单独介绍:

简单工厂模式
工厂方法模式
抽象工厂模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值