抽象工厂模式

PPG007 ... 2021-12-30 About 1 min

# 抽象工厂模式

定义

为创建一组相关或相互依赖的对象提供一个接口。

举例:

每个电脑厂商都能生产键盘和鼠标,且这两件产品存在对应的关系。

首先定义两个抽象类:键盘类和鼠标类,A 厂商和 B 厂商分别创建一个鼠标类、一个键盘类继承自抽象类。

定义一个工厂接口,包含创建键盘和鼠标的功能,A、B 厂商工厂都实现这个接口,并各自重写方法生产自己的键盘和鼠标。

这样在调用者看来,只要工厂.创建的产品名就能获得对应厂商的某个产品了。

# 抽象工厂模式的优点

  • 封装性,上层模块只要关注产品的抽象即可,具体实现只要工厂知晓即可。
  • 抽象工厂模式中对象是有关系的,关系只在工厂中被约束,例如控制产品比例,这对上层模块是隐藏的。

# 抽象工厂模式的缺点

产品族(纵向扩展)扩展非常困难,违反开闭原则。

# 抽象工厂模式的使用场景

一组有着相同约束的对象。例如比例关系、对应关系等。

# 注意事项

抽象工厂横向扩展容易,纵向扩展困难,例如电脑工厂还要生产音响,这就属于纵向扩展,要修改工厂接口、接口的实现、还要编写抽象类和一系列实现类;如果增加一个厂商,则只要通过继承和实现即可完成扩展,符合开闭原则。

Last update: December 30, 2021 09:14
Contributors: PPG007