简单工厂、工厂方法、抽象工厂

共同点

实现了将对象的创建与使用解耦

不同点

简单工厂通过封装对象的创建,实现了对象的创建提取到简单工厂的创建方法,使其可以独立变化与复用。工厂方法、抽象工厂通过在高层组件(Creater)定义抽象依赖,根据依赖倒置原则,实现了客户端与具体产品的解耦。

工厂方法:通过在Creater定义抽象的Product,Creater中的代码都根据抽象的Product编写,ConcreteCreater的工厂方法定义的返回值也是抽象的Product,高层组件(Creater)和低层组件(具体Product)都依赖抽象的Product,彼此之间没有相互依赖。

抽象工厂: 客户端只依赖抽象工厂(AbstractFactory)和抽象的成员(AbstractMember),不依赖任何具体的工厂或者成员,具体的工厂类方法的返回值也是抽象的成员(AbstractMember),高层组件(客户端)与低层组件(具体Member类)都依赖抽象的成员(AbstractMember),彼此之间没有相互依赖。

联系

工厂方法模式的工厂方法一般使用简单工厂实现,抽象工厂每个CreateMember方法一般使用工厂模式实现。

抽象工厂接口内的每个方法都负责创建一个具体产品,同时我们使用实现抽象工厂的子类来提供这些具体的做法,所以在抽象工厂中使用工厂方法实现生产方法是相当自然的。

posted @ 2020-03-30 21:46  青玄鸟  阅读(121)  评论(0编辑  收藏  举报