笔记:Abstract Factory
1.目的
创建相关或者相互依赖的一组对象(这些对象具有某些共同的属性),创建之前并不知道这些对象的具体类型。
2.结构图:
如上图,我们可以看到system 直接使用的是AbstractFactory, AbstractProductA, AbstractProductB。系统并不知道ConcreteFactory,具体的产品。 用户在使用的系统的时候,只需要创建具体的ConcreteFactory。AbstractFactory模式有效的封装了对象的创建。
3. 使用Abstract Factory场合
l 系统使用products, 但是并不关心具体的products的创建。
l 系统在创建的时候,需要一些相关的products来进行初始化或者配置。
l 一组相关的产品被系统使用,需要根据某种约束来组合产品。
l 如果想要提供一个products 的类库,而你只想暴露你的接口,而不想提供其实现。
4.协作关系
客户生成具体的工厂,具体工厂创建出系统所需要的products。系统利用这些products进行初始化。
5.优势
l Abstract Pattern 处理应用程序中对象的创建。客户通过它可以不用直接与具体产品对象的实现打交道。客户只需要知道具体的Factory 就可以生成出系统所需要的对象。
l 应用程序改变产品族容易。
l 有助于系统中产品的一致性。应用程序使用的产品肯定是一个具体工厂生产出来的。
6.不足
增加新产品系列是很难的。