Builder 构造器模式

Builder 构造器模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

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

1.2. 自我理解

其核心思想是将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。

为了将复杂对象的构建过程与它的部件分离。注意: 是解耦过程和部件。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。
在创建者模式中,客户端不再负责对象的创建与组装,而是把这个对象创建的责任交给其具体的创建者类,把组装的责任交给组装类,客户端只负责对象的调用,从而明确了各个类的职责。

虽然利用创建者模式可以创建出不同类型的产品,但是如果产品之间的差异巨大,则需要编写多个创建者类才能实现,如果这是结合工厂模式更好。

1.3. 构造器模式的组成

Product: 具体的对象,需要构造者。
Builder: 构造器接口,提供了Product中不同字段设置方法,可以获取Product
ConcreteBuilder: 具体构造器,实现了Builder。对Product中字段进行业务逻辑处理,实例化Product。
Director: 面向Builder接口,可以控制复杂构建步骤。

2. UML

3. Example

3.1. 场景

现在有个类,每个业务平台调用前的校验或者字段转换工作不一样,从而在调用端做了大量的工作,而工作中又有重复的校验或者转换业务。那么此时构造器模式大展身手。

3.2. Builder设计模式的代码实现

3.3. 优化过后的构造器

现在基本上流行的一些开源框架,构造器模式的运用,一般都是下面这种变种模式。不需要Director来调用构造器了。

原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]

本文链接地址: http://www.loserzhao.com/java/designpattern/builder-designpattern.html

文章的脚注信息由WordPress的wp-posturl插件自动生成

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

使用新浪微博登陆