1、基本介绍
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 建造者模式涉及到以下四个角色的概念:
- 产品角色:该角色是建造的复杂对象,提供基本方法。
- 抽象建造者角色:提供一个接口,规范产品对象的建造,一般由子类实现。一般来说,产品的组成部分数与建造方法数相同,即有多少组成部分,就有多少个建造方法。
- 具体建造者角色:该角色实现了抽象建造者抽象建造者接口,主要是实现所有声明的方法以及返回建造好的产品实例。
- 导演者角色:负责调用具体建造者按照顺序建造产品。导演者只负责调度,真正执行的是具体建造者角色。
2、具体实现
假设我们想造一辆车,该如何实现呢?
定义产品角色
public class CarProduction {private String carHead;private String carBody;public String getCarHead() {return carHead;}public void setCarHead(String carHead) {this.carHead = carHead;}public String getCarBody() {return carBody;}public void setCarBody(String carBody) {this.carBody = carBody;}}
定义抽象建造者
public interface Ibuilder {public void buildHead();public void buildBody();public CarProduction build();}
定义具体建造者
public class BenchiBuilder implements Ibuilder {private CarProduction production = new CarProduction();@Overridepublic void buildHead() {System.out.println("生产奔驰车头");production.setCarHead("生产奔驰车头");}@Overridepublic void buildBody() {System.out.println("生产奔驰车身");production.setCarBody("生产奔驰车身");}@Overridepublic CarProduction build() {System.out.println("车造完了");return production;}}
创建导演者 ```java public class Director { private Ibuilder ibuilder;
public Director(Ibuilder ibuilder) {
this.ibuilder = ibuilder;
}
public CarProduction buildCar() {
ibuilder.buildHead(); ibuilder.buildBody(); return ibuilder.build();} }
- 运行
```java
public class demo {
public static void main(String[] args) {
// 造奔驰车
Director directorA = new Director(new BenchiBuilder());
directorA.buildCar();
}
}

