设计模式——抽象工厂模式

62 阅读1分钟

一.定义

    为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。

二.类图

image.png

三.优点

  • 良好的封装性,每个产品的实现类无需高层模块关心,高层模块只需要关心接口就可以了。
  • 产品组内的约束为非公开状态。

四.缺点

    产品组扩展困难。产品组扩展需要修改抽象接口AbstractProduct,会引起其他接口的修改。

五.使用场景

    一个对象组(或是一组没有任何关系的对象)都有相同的约束,则可以使用持续i昂工厂模式。例如一个文本编辑器和图片处理器,都是软件实体,但是Linux下的文本编辑器和Windows下的文本编辑器虽然功能和界面相同,但是代码实现是不同的,图片处理器也有类似的情况。这就具有了共同的约束条件:操作系统类型。于是我们可以使用抽象工厂模式,产生不同操作系统下的编辑器和图片处理器。

六.注意事项

    产品组扩展困难,但产品等级是非常容易扩展的,增加一个产品等级,只要增加一个工厂类负责新增加出来的产品生产任务即可。也就是说横向扩展容易,纵向扩展困难。