生成器模式

作者: 尘絮缘12138 | 来源:发表于2016-02-28 06:08 被阅读129次

生成器模式是iOS设计模式中比较简单的一种模式,也经常拿来和抽象工厂作对比。首先我们说下什么事生成器模式。该模式由三个部分构成: 客户端-指导者-建造者。客户就是提具体需求的,例如我想要什么; 指导者类似承包商, 他来接收客户的要求,消化吸收后,协调各个建造者,告诉他们要造什么,之后建造者来负责具体的制造部分。总的来说,生成器模式就是为了分离逻辑和算法。这里的逻辑就是建造什么,也包含建造的顺序;算法就是建造者具体负责的那部分,即这个东西如何造出来。这里特别体现了设计模式的初衷: 解耦。

我们来看一个类图:

生成器模式类图

其中Director定义了construct方法,用来指导具体的builder;而Builder则是一个抽象接口,定义了build的方法,由具体builder实现,同时提供getResult方法返回给客户具体的产品。从时序图中我们也可以看到,是client最终向builder发送了getResult消息,而不是director。这时候不禁有了疑问,为什么不让director返回呢?如果这样的话,就违背了逻辑和算法分开的初衷,并且变成了类似抽象工厂的模式。生成器模式强调逻辑和算法分开是为了更好地解耦这两个部分,相同的builder在不同的director指导下可以生产出不同的产品,反之亦然,这样的处理提高了程序的灵活性和健壮性。下图是生成器和抽象工厂模式的对比:

对比

在实际应用中,建造者和指导者是聚合的关系,指导者中包含建造者。建造者类似MVC中的Model,定义一些属性,一些建造方法(算法).例如游戏中玩家和敌人的CharacterBuider。而指导者就是一个具体类,例如ChasingGame(游戏名), 定义2个construct方法,例如createPlayercreateEnemy来向builder发送指令。完成构建后,builder返回一个装配好的人物类给客户端。

总的来说,生成器模式浅显易懂,比较tricky的部分就是和抽象工厂的区分以及何时使用该模式。(1. 构建过程需要以不同方式进行;2. 构建较为复杂的对象,创建算法独立于装配方式,如组合对象)

相关文章

  • 生成器模式(Builder Pattern)

    生成器模式:用生成器模式封装一个产品的构造过程,并允许按步骤构造 生成器模式又称为建造者模式,是创建性模式中的一种...

  • 设计模式--生成器(建造者)

    生成器模式(Builder) 生成器模式最初的定义出现于《设计模式》(Addison-Wesley,1994) 生...

  • 生成器模式(Builder Pattern)

    1.生成器模式概念 在《Head First Design Patterns》文中是这么介绍生成器模式的,“封装一...

  • 生成器模式

    生成器模式是iOS设计模式中比较简单的一种模式,也经常拿来和抽象工厂作对比。首先我们说下什么事生成器模式。该模式由...

  • iOS设计模式-生成器模式

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

  • 创建型模式4-生成器模式

    创建型模式4-生成器模式 生成器模式(builder) 意图 将一个复杂对象的构建与它的的表示分离,使得同样的构建...

  • S2. 生成器模式

    生成器模式 生成器模式属于创建型设计模式,根据需要分步创建功能较多的对象。 场景 问题 假设要生产两款不同品牌的笔...

  • 设计模式 - 工具箱

    大纲: OO模式 OO基础 OO原则 Point # OO模式 策略模式 观察者模式 装饰者模式 生成器模式 Bu...

  • 《设计模式之禅》读书笔记-2.5-建造者模式

    2.5 建造者模式 定义: Builder Pattern,也叫生成器模式Separate the constru...

  • 生成器模式 Builder Pattern

    生成器模式(Builder Pattern)又称为建造模式,是 Gang of Four design patte...

网友评论

    本文标题:生成器模式

    本文链接:https://www.haomeiwen.com/subject/vqawkttx.html