0
点赞
收藏
分享

微信扫一扫

设计模式 | 抽象工厂模式(Abstract Factory)

目录

抽象工厂模式(Abstract Factory)

1. 抽象工厂模式解决

2. 抽象工厂类图UML

3. 抽象工厂模式的主要角色

4. 代码实现

5. 抽象工厂方法再探究

6. 优缺点

7. 适用示例


抽象工厂模式(Abstract Factory)

1. 抽象工厂模式解决

2. 抽象工厂类图UML

img

3. 抽象工厂模式的主要角色

抽象工厂(AbstractFactory):提供了创建产品的接口,包含了多个创建产品的接口方法,可以创建多个不同等级的产品

具体工厂(ConcreteFactory):实现了抽象工厂定义的方法,完成具体产品的创建

抽象产品(Product):定义了产品的规范,描述产品的主要特征和性能

具体产品(ConcreteProduct):实现了抽象产品的定义的方法,有具体工厂来创建产品,具体工厂和具体产品一对多关系

4. 代码实现

抽象工厂方法实现:

public interface AbstractFactory {
    public Product1 createProduct1();
    public Product2 createProduct2();
}
​
public class ConcreteFactory1 implements AbstractFactory {
    @Override
    public Product1 createProduct1() {
        System.out.println("具体工厂1产生具体产品1...");
        return new ConcreteProduct1();
    }
​
    @Override
    public Product2 createProduct2() {
        System.out.println("具体工厂1产生具体产品2...");
        return new ConcreteProduct2();
    }
}

使用步骤:

  1. 创建抽象产品类,定义产品的公共方法
  2. 创建具体产品类(实现抽象产品接口),定义生成的具体产品
  3. 创建抽象工厂类,定义具体工厂的公共接口,一个工厂类可以创建不同等级的产品
  4. 创建具体工厂类,定义创建对应具体产品实例的方法
  5. 调用方调用具体的工厂类的方法,从而创建不同具体产品的实例

5. 抽象工厂方法再探究

6. 优缺点

优点:

  1. 可以在工厂类内部对产品中相关联的多级产品共同管理,而不必专门引入新的类来管理
  2. 抽象工厂增加了程序的可扩展性,当新增一个新的产品族时,不需要修改源代码,满足开闭原则

缺点:

  1. 当产品族新增一个产品类型时,所有的工厂类都需要进行修改,增加了系统的抽象性和理解难度

7. 适用示例

举报

相关推荐

0 条评论