zoukankan      html  css  js  c++  java
  • iOS设计模式之生成器

    iOS设计模式之生成器

    1.生成器模式的定义

    (1): 将一个复杂的对象的构件与它的表示分离,使得相同的构建过程能够创建不同的表示

    (2): 生成器模式除了客户之外还包括一个Director(指导者),和一个builder(生成器).client通过向指导者(Director)提出需求,指导者(Director)向bulider(生成器)提供信息来建造特定的产品.bulider依据特定的信息生产产品并返回给客户.

    2:使用生成器的优点

    构建某些对象有多种不同的方式,假设这些逻辑包括在构建这些对象的类的单一方法中,构建的逻辑就会非常复杂(比如:针对各种构建需求的一大片潜逃if- else),假设分解为客户 — 指导者 — 生成器的关系,过程将变得易于管理.


    3.生成器模式的UML


    Builder :生成器接口,定义创建一个Product各个部件的操作

    ConcreteBuilder:详细的生成器的实现类

    Product:产品,表示被生成器构建的复杂的对象。包括多个部件

    Director:指导者也称导向者。主要用来使用Builder接口 。已一个统一的接口创建Product对象



    4 .生成器模式与抽象工厂模式的比較


    从形式上来讲,通过角色合并。方法功能的转变,抽象工厂能够和生成器模式形式上取得一致(比方抽象工厂只处理一个产品族,工厂方法都处理同一个产品)。但注意,这不过形式上的。实际上。抽象工厂和生成器模式有着本质的差别:


    1、生成器模式是为了构造一个复杂的产品,并且购造这个产品遵循一定的规则(同样的过程),而抽象工厂则是为了创建成族的产品(系列产品)。同族产品的构造在逻辑上并不存在必定的联系(唯一必定的联系就是大家都属于一族)。


    2、生成器模式的构造方法是为了构造同一个产品,因此必须有指导者来协调进行工作。构造方法之间存在必定的业务联系,而抽象工厂的构造方法都是独立去构建自己的产品对象。因此他们不存在必定的联系。

    在生成器模式中client不直接调用构建产品部分的方法来获取终于产品。而抽象工厂中client是通过调用不同的工厂方法获取不同的产品。


    3.在生成器模式中,那些用来构造产品不同部分的方法一般都实现为Protected形式,以防止client通过调用这样的方法活得不可预料的结果。而抽象工厂中的这些方法必须为Public形式。否则客户无法调用来获得产品结果;


    4.生成器模式的角色有生成器。产品和指导者,而抽象工厂的角色有工厂和产品。

    不管角色和功能如何变换,但所含的业务逻辑角色都应该存在,这也是两个模式的业务本质。




  • 相关阅读:
    【leetcode】416. Partition Equal Subset Sum
    【leetcode】893. Groups of Special-Equivalent Strings
    【leetcode】892. Surface Area of 3D Shapes
    【leetcode】883. Projection Area of 3D Shapes
    【leetcode】140. Word Break II
    【leetcode】126. Word Ladder II
    【leetcode】44. Wildcard Matching
    【leetcode】336. Palindrome Pairs
    【leetcode】354. Russian Doll Envelopes
    2017.12.22 英语面试手记
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5352480.html
Copyright © 2011-2022 走看看