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

三个概念:

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

互相关系

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

优缺点

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

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

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

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

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

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

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

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

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

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

你可能感兴趣的:(设计模式)