zoukankan      html  css  js  c++  java
  • IOS设计模式学习(6)生成器

    1 前言

    有时候,构建某些对象有多种不同方式。如果这些逻辑包含在构建这些对象的类中的单一方法中,构建的逻辑会非常荒唐(例如,针对各种构建需求的一大片嵌套if-else或者switch-case语句)。如果能把构建过程分解为:客户-指导者-生成器(client-director-builder)的关系,那么过程将更容易管理与复用。针对此类关系的设计模式成为生成器。

    2 详述

    2.1 简述

    除了客户和所需要的产品,生成器模式包含连个角色:Director(指导者)和Builder(生成器)。Builder知道如何在缺少某些特定信息来建造特点产品。Director知道Builder应该如何建造什么,以参数向其提供缺少的信息来建造特定产品。

    生成器模式讲一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。

    2.2 何时使用

    (1)需要创建涉及各种部件的复杂对象。创建对象的算法应该独立于部件的装配方式。常见的例子是构建组合对象。

    (2)构建过程需要以不同的方式(例如,部件或表现的不同组合)构建对象。

    2.3 生成器与抽象工厂的对比

    (1)生成器构建复杂对象,抽象工厂构建简单或者复杂对象;

    (2)生成器以多个步骤构建对象,抽象工厂以单一步骤构建对象;

    (3)生成器以多种方式构建对象昂,抽象工厂以单一步骤构建对象;

    (4)生成器在构建过程的最后一步返回产品,抽象工厂立刻返回产品;

    (5)生成器专注一个特定产品,抽象工厂强调一套产品。

    3 结语

    生成器模式能帮助构建涉及部件与表现的各种组件的对象。

    以上是所有内容,希望对大家有所帮助。

  • 相关阅读:
    php使用cookie来保存用户登录信息
    Linux下进程操作
    TortoiseSVN无法编辑日志信息的解决方法
    用DIV布局制作公告板
    HashMap的遍历
    实现文本滚动
    子DIV块中设置margintop时影响父DIV块位置的解决办法
    php使用session来保存用户登录信息
    javascript jquery ajax动态提交多个参数 api测试 拂晓风起
    javascript 处理返回json中的\u中文乱码问题(也不是乱码了,就是\u编码) 拂晓风起
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3162956.html
Copyright © 2011-2022 走看看