您的位置:首页 > 编程语言 > Java开发

JAVA设计模式是个什么玩意儿_04_建造者模式

2016-11-02 00:51 399 查看

1. 说明

(1)英文名叫Builder,建造者模式,也叫生成器模式。

(2)属于创建型模式。

2. 定义



       要想实现同样的构建过程有不同的表现,自然的思路就是把构建过程独立出来,在生成器模式中把它称为指导者,由它来知道装配过程,但是不负责具体的构建。当然只有指导者也是不够的,得有具体的对象生成器。这样指导者就是可以重用的构建过程,而生成器是可以被切换的具体实现。举个简单的例子,如汽车,有很多部件,车轮,方向盘,发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一部汽车,这个装配过程也很复杂(需要很好的组装技术), builder模式就是为了将部件和组装分开。

3. 结构



        分4个角色,抽象建造者角色(Builder)、具体建造者角色(ConcreteBuilder)、导演者角色(Director)、产品角色(Product),主要说导演者角色,导演者角色是与客户端打交道的角色。导演者将客户端创建产品的请求划分为对各个零件的建造请求,再将这些请求委派给具体建造者角色。具体建造者角色是做具体建造工作的,但是却不为客户端所知。

4. 代码

Product.java

Builder.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负责整体的构建算法,而且通常是分步骤地来执行。
  不管如何变化,建造模式都存在这么两个部分,一个部分是部件构造和产品装配,另一个部分是整体构建的算法。认识这点是很重要的,因为在建造模式中,强调的是固定整体构建的算法,而灵活扩展和切换部件的具体构造和产品装配的方式。
  再直白点说,建造模式的重心在于分离构建算法和具体的构造实现,从而使得构建算法可以重用。具体的构造实现可以很方便地扩展和切换,从而可以灵活地组合来构造出不同的产品对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息