zoukankan      html  css  js  c++  java
  • Abstract Factory 抽象工厂

    意图

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

    适用性

    一个系统要独立于它的产品的创建、组合和表示时

    结构

    参与者

    AbstractFactory:声明一个创建抽象产品对象的操作接口

    ConcreteFactory:实现创建具体产品对象的操作

    AbstractProduct:一类产品对象声明一个接口

    协作

    通常在运行时刻创建一个ConcreteFactory类的实例。这一具体的工厂创建具有特定实现的产品对象。为创建不同的产品对象,客户应使用不同的具体工厂。

    AbstractFactory将产品对象的创建延迟到它的ConcreteFactory子类

    效果

    优点:

    它分离了具体的类:它将客户与类的实现分离。客户通过它们的抽象接口操纵实例

    它使得易于交换产品系列:它只需改变具体的工厂即可使用不同的产品配置,这是因为一个抽象工厂创建了一个完整的产品系列,所以整个产品系列会立刻改变

    它有利于产品的一致性:一个应用一次只能使用同一个系列中的对象

    缺点:

    难以支持新种类的产品:这是因为AbstractFactory接口确定了可以被创建的产品集合。 支持新种类的产品就需要扩展该工厂接口,这将涉及AbstractFactory类及其所有子类的改变

    实现

    见 工厂模式总结(简单工厂,工厂方法,抽象工厂)

  • 相关阅读:
    CF763C Timofey and Remoduling
    CF762E Radio Stations
    CF762D Maximum Path
    CF763B Timofey and Rectangles
    URAL1696 Salary for Robots
    uva10884 Persephone
    LA4273 Post Offices
    SCU3037 Painting the Balls
    poj3375 Network Connection
    Golang zip压缩文件读写操作
  • 原文地址:https://www.cnblogs.com/raichen/p/5670430.html
Copyright © 2011-2022 走看看