zoukankan      html  css  js  c++  java
  • 设计模式3.1 Abstract Factory(抽象工厂)对象创建型模式

      我将按照描述一个设计模式的顺序进行以后博客的书写(其实,主要是设计模式这本书上是按照这个顺序进行书写的(*^__^*) )。

      1.意图

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

      2.别名 Kit(工具箱,装备)

      3.动机。为了支持多种视感(look-and-feel)。客户仅与抽象类定义的接口交互,而不使用特定的具体类的接口

      4.实用性(以下情况可以使用Abstract Factory模式)

    •  一个系统要对立与他的 产品的创建、组合和表示时
    • 一个系统要由多个产品系列中的一个来配置时
    • 当你要强调一系列相关的产品对象的设计以便进行联合使用时
    • 当你提供一个产品库,而只想显示他们的接口而不是实现时

      5.结构

      

      6.参与者

    • Abstarctory:声明一个创举抽象产品对象的操作接口。
    • ConcreteFactory:实现创建具体产品对象的操作
    • AbstractProduct:为一类产品对象声明一个接口
    • ConcreteProduct:定义一个将相应的具体工厂创建的产品对象,实现AbstractProduct接口
    • Client:仅使用由AbstractFactory和AbstractProduct类声明的接口

      7.协作

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

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

      8.效果

    • 它分离了具体的类 Abstract Factory模式帮助你控制一个应用创建的对象的类。因为一个工厂封装创建产品对象的责任和过程,它将客户与类的实现分离。
    • 它使得易于交互产品系列
    • 它有利于产品的一致性
    • 难以支持新种类的产品

      9.实现(实现Abstract Factory模式的一些有用的技术)

    • 将工厂作为单件
    • 创建产品
    • 定义可扩展的工厂

      10.实例,就是扩展带有炸弹的Room和带有魔法的Door的迷宫游戏,我把完整代码实现附上。

      代码下载:AbstractFactory_MazeGame.rar

                      

  • 相关阅读:
    mysql 开发基础系列1 表查询操作
    sql server 索引阐述系列三 表的堆组织
    sql server 索引阐述系列二 索引存储结构
    sql server 索引阐述系列一索引概述
    PyCharm 安装 pip
    Python 简单分页思路
    mysql 5.7 线程阻塞处理
    Python 练习: 简单角色游戏程序
    Docker 修改存储路径
    使用普通用户执行 docker
  • 原文地址:https://www.cnblogs.com/lufangtao/p/2470545.html
Copyright © 2011-2022 走看看