抽象工厂模式:
1.模式动机:
在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,
但有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象,这时就要用抽象工厂模式。
2.为了能清晰的理解抽象工厂模式,需要先引进两个概念:
a.产品等级结构:即产品的继承结构,
如抽象类是电视机,其子类有海尔TV,海信TV,那抽象电视机与具体品牌的电视机之间就构成了一个产品等级结构。
b.产品族:在抽象工厂模式中,产品族就是由同一个工厂生产的,位于不同产品等级结构的一组产品,如海尔电器工厂生产的海尔TV,海尔电冰箱。
3.抽象工厂模式定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类
a.抽象工厂(AbstractFactory)
抽象工厂用于声明生产抽象产品的方法,在一个抽象工厂中可以定义一组方法,每一个方法对应一个产品等级结构
b.具体工厂(ConcreteFactory)
具体工厂实现了抽象 工厂声明的生产抽象产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中
c.抽象产品(AbstractProduct)
抽象产品为每种产品声明接口,在抽象产品中定义了产品的抽象业务方法
d.具体产品(ConcreteProduct)
具体产品定义具体工厂生产的具体产品对象,实现抽象产品接口中定义的业务方法
===================分界线=====================
4.具体代码实现:
第一步: 写一个抽象工厂类 :电器工厂类,用于声明生成抽象产品的方法;
package AbstractFactory;
import AbstractProduct.AirConditioner;
import AbstractProduct.Television;
public interface EFactory {
public Television produceTelevision();
public AirConditioner produceAirConditioner();