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 结语

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

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

  • 相关阅读:
    HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)
    HDU Wooden Sticks
    HDU 3664 Permutation Counting
    javascript DOM添加元素,使用节点属性
    SQL server查询数据类型为ntext是空或NULL值
    TSQL Pivot Tables(行列转换) in SQL Server 2005/2008
    ASP.NET 3.5(c#)区域化设置(LCID)
    Sql 脚本导入EXCEL数据
    asp.net 3.5 csharp 实现事务
    asp.net3.5 csharp: How to show HTML content in calendar tooltip?
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3162956.html
Copyright © 2011-2022 走看看