JAVA设计模式是个什么玩意儿_04_建造者模式
2016-11-02 00:51
399 查看
1. 说明
(1)英文名叫Builder,建造者模式,也叫生成器模式。(2)属于创建型模式。
2. 定义
要想实现同样的构建过程有不同的表现,自然的思路就是把构建过程独立出来,在生成器模式中把它称为指导者,由它来知道装配过程,但是不负责具体的构建。当然只有指导者也是不够的,得有具体的对象生成器。这样指导者就是可以重用的构建过程,而生成器是可以被切换的具体实现。举个简单的例子,如汽车,有很多部件,车轮,方向盘,发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一部汽车,这个装配过程也很复杂(需要很好的组装技术), builder模式就是为了将部件和组装分开。
3. 结构
分4个角色,抽象建造者角色(Builder)、具体建造者角色(ConcreteBuilder)、导演者角色(Director)、产品角色(Product),主要说导演者角色,导演者角色是与客户端打交道的角色。导演者将客户端创建产品的请求划分为对各个零件的建造请求,再将这些请求委派给具体建造者角色。具体建造者角色是做具体建造工作的,但是却不为客户端所知。
4. 代码
Product.javaBuilder.java
ConcreteBuilder.java
Director.java
Client.java
public class Product { private String part1; private String part2; public String getPart1() { return part1; } public void setPart1(String part1) { this.part1 = part1; } public String getPart2() { return part2; } public void setPart2(String part2) { this.part2 = part2; } }
public interface Builder { public void buildPart1(); public void buildPart2(); public Product retrieveProduct(); }
public class ConcreteBuilder implements Builder { private Product product = new Product(); public void buildPart1() { product.setPart1("构建第1个部件"); } public void buildPart2() { product.setPart2("构建第2个部件"); } public Product retrieveProduct() { return product; } }
public class Director { private Builder builder; public Director(Builder builder) { this.builder = builder; } /** * 产品构造方法,负责调用各个零件建造方法 */ public void construct() { builder.buildPart1(); builder.buildPart2(); } }
public class Client { public static void main(String[] args) { Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.construct(); Product product = builder.retrieveProduct(); System.out.println(product.getPart1()); System.out.println(product.getPart2()); } } 输出结果: 构建第1个部件 构建第2个部件
5. 总结
建造模式分成两个很重要的部分:(1)一部分是Builder接口,这里是定义了如何构建各个部件,也就是知道每个部件功能如何实现,以及如何装配这些部件到产品中。
(2)另外一个部分是Director,Director是知道如何组合来构建产品,也就是说Director负责整体的构建算法,而且通常是分步骤地来执行。
不管如何变化,建造模式都存在这么两个部分,一个部分是部件构造和产品装配,另一个部分是整体构建的算法。认识这点是很重要的,因为在建造模式中,强调的是固定整体构建的算法,而灵活扩展和切换部件的具体构造和产品装配的方式。
再直白点说,建造模式的重心在于分离构建算法和具体的构造实现,从而使得构建算法可以重用。具体的构造实现可以很方便地扩展和切换,从而可以灵活地组合来构造出不同的产品对象。
相关文章推荐
- JAVA设计模式是个什么玩意儿_05_原型模式
- JAVA设计模式是个什么玩意儿_00_工厂模式家族准备篇_简单工厂模式
- JAVA设计模式是个什么玩意儿_03_单例模式
- JAVA设计模式是个什么玩意儿
- JAVA设计模式是个什么玩意儿_02_抽象工厂模式
- Java设计模式04--建造者(生成器)模式
- JAVA设计模式是个什么玩意儿_01_工厂方法模式
- JAVA设计模式--建造者模式
- JAVA设计模式:建造者(Builder)
- Java设计模式笔记(5)建造者模式
- java设计模式——建造者模式
- 设计模式(JAVA)-------建造者模式
- java设计模式之建造者模式
- JAVA设计模式-建造者模式-Builder
- OOP设计模式[JAVA]——04命令模式
- java 设计模式之建造者模式(3)
- Java设计模式之什么是设计模式
- java 设计模式 建造者模式
- java设计模式之建造者模式
- Java设计模式-----Builder建造者模式