- 抽象工厂模式:抽象工程模式是工厂方法模式的升级版,工厂方法模式只生产一个等级的产品,而抽象工厂模式可以生产多个等级的产品
- 使用抽象工厂模式一般要满足以下条件:
系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品
系统一次只能消费其中某一族产品,即同族的产品一起使用 - 比抽象工厂模式的优点
可以在类的内部对产品关联的多等级产品共同管理,而不必专门引入多个新的类来进行管理
当增加一个产品族时不需要修改原代码,满足开闭原则 - 缺点
当产品族中需要增加一个新的产品时,所有工厂类都需要修改
模式的结构
抽象工厂
具体工厂
抽象产品
具体产品
模式的实现
- 抽象工厂
interface AbstractFactory
{
public Product1 newProduct1();
public Product2 newProduct2();
}
- 具体工厂
class ConcreteFactory1 implements AbstractFactory
{
public Product1 newProduct1()
{
System.out.println("具体工厂 1 生成-->具体产品 11...");
return new ConcreteProduct11();
}
public Product2 newProduct2()
{
System.out.println("具体工厂 1 生成-->具体产品 21...");
return new ConcreteProduct21();
}
}