设计模式之抽象工厂模式

抽象工厂模式

 

本文例子是披萨Pizza为例

三种工厂模式

使用模式的前提:

1)编码时不能预见需要创建哪种类的实例。

2)系统不应依赖于产品类实例(例如本文的车)如何被创建、组合和表达的细节。

 

对比

1)简单工厂模式:简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。

(2)工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。简单说使一个类的实例化延迟到其子类。

(3)抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。简单说就是将对象的声明和实现分离。


简单工厂模式

2.1 介绍

1)工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。——PizzaStore和SimplePizzaFactory

2)抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。——Pizza

3)具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。——CheesePizza、VeggiePizza、ClamPizza

2.2 设计类图

设计模式之抽象工厂模式_第1张图片

 

 

工厂方法模式

3.1 介绍

工厂方法模式角色介绍:

1抽象工厂类角色:工厂的抽象,是一般工厂的父类或实现的接口。在Java中由一个接口或抽象类来实现。——PizzaStore

2工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。——NYPizzaStore、ChicagoPizzaStore

3抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。——Pizza

4具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。——NYStyleCheesePizza、ChicagoStyleCheesePizza

3.2 设计类图

设计模式之抽象工厂模式_第2张图片


4 抽象工厂模式

4.1 介绍

抽象工厂模式角色介绍:

1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。

2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。在java中它由具体的类来实现。

3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。

4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。

4.2 设计类图

设计模式之抽象工厂模式_第3张图片


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