您的位置:首页 > 其它

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

2017-10-07 21:12 204 查看
一,生成器模式(建造者模式)
有的时候,创建某些对象有多种不同的方式,如果这些逻辑包含在构建这些对象的类的单一方法中,构建的逻辑会非常荒诞(需要大量的if else,switch等语句)。如果能够把构建的过程分解成 客户-指导者-生成器(client-director-builder)的关系,那么过程可以更加容易管理和复用。这种关系的设计模式,就是生成器。
除了客户和所需的产品,生成器还包含两个重要的角色 指导者(director)和生成器(builder)。Builder知道如何在缺少某些特定信息的情况下创建产品。Director知道builder应该创建什么,以参数形式向其提供缺少的信息来建造产品。

生成器模式类图:



Builder:一个抽象的接口,声明buildPart方法。
ConcreateBuilder:Builder的实现类,实现buildPart方法,同时提供getResult方法,负责向客户端返回构建完毕的Product对象。
Director:定义了construct方法,调用Builder执行buildPart

client,director,builder三者运行时交互图:



client生成ConcreteBuilder对象,和以ConcreteBuilder为初始化参数的Director实例对象,用于协同工作。当client发送construct方法给Director时候,方法调用ContreteBuilder的buildPartA,buildPartB,buildPartC等方法,构建对象组成部分。construct方法执行完毕以后,client调用getResult方法获取创建好的产品对象。

二,应用场景
1,需要创建涉及各种部件的复杂对象。创建对象的算法应该独立独立部件的装配方式。常见是构建组合对象
2,构建过程需要以不同的方式(部件或者表现的不同组合)构建对象。

三,生成器和抽象工厂

生成器抽象工厂
构建复杂对象构建简单活着复杂对象
以多个步骤构建对象以单一步骤构建对象
以多种方式构建对象以单一方式构建对象
在构建过程的最后一步返回产品立刻返回产品
专注一个特定的产品强调一套产品
四,代码示例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: