`

设计模式之创建类模式——建造者模式

 
阅读更多

建造者模式(Builder Pattern)也叫做生成器模式。

定义:

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

通用类图:

image

通用代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* 产品类
*
* @author Administrator
*
*/
publicclassProduct {
publicvoiddoSomething() {
// 独立业务处理
}
}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* 抽象建造者
*
* @author Administrator
*
*/
publicabstractclassBuilder {
// 设置产品的不同部分,以获得不同的产品
publicabstractvoidsetPart();
// 建造产品
publicabstractProduct buildProduct();
}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* 具体建造者
*
* @author Administrator
*
*/
publicclassConcreteProductextendsBuilder {
privateProduct product = newProduct();
// 组建一个产品
@Override
publicProduct buildProduct() {
// 组件产品逻辑
returnthis.product;
}
// 设置产品零件
@Override
publicvoidsetPart() {
// 产品类内的逻辑处理
}
}

如果有多个产品类就有几个具体的建造者,而且这多个产品类具有相同接口或抽象类。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* 导演类
*
* @author Administrator
*
*/
publicclassDirector {
privateBuilder builder = newConcreteProduct();
// 构建不同的产品
publicProduct getAProduct() {
builder.setPart();
/*
* 设置不同零件,产生不同的产品
*/
returnbuilder.buildProduct();
}
}

导演类起到封装的作用,避免高层模块深入到建造者内部的实现类。当然,在建造者模式比较庞大时,导演类可以有多个。

建造者模式的优点:

  1. 封装性 使用建造者模式可以是客户端不必知道产品内部组成的细节。
  2. 建造者独立,容易扩展
  3. 便于控制细节风险 由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

建造者模式的使用场景:

  1. 相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。
  2. 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可以使用该模式。
  3. 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适。
  4. 在对象的创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程中不易得到时,也可以使用建造者模式封装该对象的创建过程。该种场景只能是一个补偿方法,因为一个对象不容易获得,而在设计阶段竟然没有发觉,而要通过创建者模式柔化创建过程,这本身已经违反设计的最初目标。

创建者模式的注意事项:

创建者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式最大不同的地方。

建造者模式最主要的功能是基本方法的调用顺序安排,也就是这些基本方法已经实现了,通俗地说就是零件的装配,顺序不同产生的对象也不同;而工厂方法则重点是创建,创建零件是它的主要责任,组装顺序则不是它关系的。

分享到:
评论

相关推荐

    Java设计模式 版本2

    对象的克隆——原型模式,复杂对象的组装与创建——建造者模式,不兼容结构的协调——适配器模式,处理多维度变化——桥接模式,树形结构的处理——组合模式,扩展系统功能——装饰模式,深入浅出外观模式,实现对象...

    java设计模式

    11.4 建造者模式的扩展 11.5 最佳实践 第12章 代理模式 12.1 我是游戏至尊 12.2 代理模式的定义 12.3 代理模式的应用 12.3.1 代理模式的优点 12.3.2 代理模式的应用 12.4 代理模式的扩展 12.4.1 普通代理 12.4.2 ...

    Python设计模式之建造者模式实例详解

    本文实例讲述了Python设计模式之...设计模式——建造者模式 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以常见不同的表示 特性: 指挥者(Director) 指挥 建造者(Builder) 建造 Produ

    深入浅出设计模式(中文版)

    3.4BuilderPattern(建造者模式) 58 3.4.1定义 58 3.4.2现实例子——快餐店 60 3.4.3C#实例——车间造车 61 3.4.4Java实例——建造房屋 65 3.4.5优势和缺陷 69 3.4.6应用情景 70 3.5PrototypePattern(原型...

    24种设计模式介绍与6大设计原则

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    深入浅出设计模式(中文版电子版)

    3.4BuilderPattern(建造者模式) 58 3.4.1定义 58 3.4.2现实例子——快餐店 60 3.4.3C#实例——车间造车 61 3.4.4Java实例——建造房屋 65 3.4.5优势和缺陷 69 3.4.6应用情景 70 3.5PrototypePattern(原型...

    python 建造者模式(示例)

    设计模式——建造者模式建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示特性: 指挥者(Director) 指挥 建造者(Builder) 建造 Product建造者模式是在创建复杂对象的...

    design-pattern-java.pdf

    对象的克隆——原型模式(四) 建造者模式-Builder Pattern 复杂对象的组装与创建——建造者模式(一) 复杂对象的组装与创建——建造者模式(二) 复杂对象的组装与创建——建造者模式(三) 七个结构型模式 七个...

    设计模式Demo

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    C++设计模式之建造者模式

    建造者模式 在GOF的《设计模式 可复用面向对象软件的基础》中是这样说的:将一个复杂对象的构建与它的表示分离,使得同样的...在《大话设计模式》一书中,例举了一个很好的例子————建造小人。建造一个小人,要分为

    JavaScript设计模式之建造者模式介绍

    主要介绍了JavaScript设计模式之建造者模式介绍,将一个复杂对象的构造与它的表示相分离,使同样的创建过程可有不同的表示,这就叫做建造者模式,需要的朋友可以参考下

    C#23种设计模式_示例源代码及PDF

    观察者模式: 让多个观察者对象同时监听某一个 观察者模式 观察者模式定义了一种一队多的依赖关系, 主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更 新自己。 20、STATE —...

    深入理解JavaScript系列.chm

    27.设计模式之建造者模式 28.设计模式之工厂模式 29.设计模式之装饰者模式 30.设计模式之外观模式 31.设计模式之代理模式 32.设计模式之观察者模式 33.设计模式之策略模式 34.设计模式之命令模式 35.设计模式之迭代...

    从模式讲到设计模式再到面向对象设计模式

    目前最有影响力的书籍是:《设计模式:可复用面向对象软件的基础》,它共编录了23种设计模式,分三大类别:创建型模式、结构型模式、行为模式,其中有一种创建型模式是抽象工厂设计模式。 在学习抽象工厂设计模式...

    C#23种设计模式

    3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式...

    管理系统javasal源码-Design-Patterns-Demo:超全的设计模式——理论+实现demo

    Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern) 2 结构型模式:这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 适配器模式(Adapter Pattern)...

    深入理解JavaScript系列

    深入理解JavaScript系列(27):设计模式之建造者模式 深入理解JavaScript系列(28):设计模式之工厂模式 深入理解JavaScript系列(29):设计模式之装饰者模式 深入理解JavaScript系列(30):设计模式之外观...

    百度地图毕业设计源码-Design-Patterns:设计模式

    百度地图毕业设计源码 设计模式(Design Patterns)[原文地址:] ——可复用面向对象软件的基础 ...创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器

    asp.net知识库

    ASP.NET 2.0使用Web Part创建应用程序之二(共二) 体验 .net2.0 的优雅(2) -- ASP.net 主题和皮肤 NET2.0系列介绍(一).NET 2.0 中Web 应用程序主题的切换 ASP.NET 2.0 中Web 应用程序主题的切换 2.0正式版中...

Global site tag (gtag.js) - Google Analytics