什么是抽象工厂模式?
定义如下:Provide an interface for creating families of related or dependent obejcts without specifying their concrete classes;(为创建一组相关或者相互依赖的对象提供一个接口,而且无需指定他们的具体类)
怎么实现抽象工厂模式?
先看类图
AbstractFactory, AbstractProduct是抽象类,而ConcreteFactory, ConcreteProduct则分别为具体的实现类,ConcreteFroduct生产出符合需求的产品再由ConcreteFactory生产即可生成满足Factory和Product两种需求的产品。
抽象工厂模式有哪些优缺点?
- 优点
- 封装性。高层模块不需要知道对象如何创建,只需要知道接口即可
- 产品族内的约束为非公开状态。例如产品内的资源分配外界不知道
- 缺点
- 产品族扩展困难
抽象工厂模式的应用有哪些?
一个最好的例子是跨平台运行程序。例如Windows, Linux, Android。运用抽象工厂模式设计通用功能接口,而具体实现则要按系统划分。