建造者模式也是创建型模式中的一种,所谓的创建型模式,指的是如何创建对象,关注的是对象的创建过程。
建造者模式是将一个复杂对象分解成多个相对简单的子模块进行创建,比如游戏中常见的人物模型,在大多数游戏中,都有游戏角色的创建,把头部中的脸型、发行、穿着等当作人物创建的局部对象处理。
创建者模式的UML图如下:
示例代码:
// 建造者模式由产品、抽象建造者、具体建造者和指挥者四个部分组成
// 产品
class Product {
private String partA;
private String partB;
private String partC;
public void setPartA(String partA) {
this.partA = partA;
}
public void setPartB(String partB) {
this.partB = partB;
}
public void setPartC(String partC) {
this.partC = partC;
}
public void show() {
System.out.println("产品展示....")
}
}
// 抽象建造者
abstract class Builder {
protected Product product = new Product();
public abstract void buildPartA();
public abstract void buildPartB();
public abstract void buildPartC();
public Product getResult() {
return product;
}
}
// 具体建造者
public class ConcreteBuilder extend Builder {
public void buildPartA() {
product.setPartA("建造 PartA");
}
public void buildPartB() {
product.setPartB("建造 PartB");
}
public void buildPartC() {
product.setPartC("建造 PartC");
}
}
// 指挥者
class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
// 产品构建与组装方法
public Product construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
return builder.getResult();
}
}
// 客户类
class Client {
public static void main(String[] args) {
Builder builder = new Builder(); // 建造者
Director director = new Director(builder); // 指挥者
Product product = director.getResult(); // 产品
product.show();
}
}
建造者模式由四个部分组成:产品对象、抽象建造者、具体建造者和指挥者。