第8章: 建造者模式
定义:
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的创建过程可以创建不同的表示。
将汽车部件组装成一辆完整的汽车并返回给用户
不同类型的游戏角色,其性别、脸型、服装、发型等外部特性都有所差
异
结构:
代码实现:
//产品
class Product {
private String partA; //定义部件,部件可以是任意类型,包括值类型和引用类型
private String partB;
private String partC;
//get()和set()方法
}
//抽象建造者
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;
}
}
//具体建造者
class ConcreteBuilder extends Builder {
@Override
public void buildPartA() {
System.out.println("建造模块A");
}
@Override
public void buildPartB() {
System.out.println("建造模块B");
}
@Override
public void buildPartC() {
System.out.println("建造模块C");
}
}
class Director {
private Builder builder;
public Director(Builder builder) {
this.builder=builder;
}
public void setBuilder(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 ConcreteBuilder(); //可通过配置文件实现
Director director = new Director(builder);
Product product = director.construct();
}
}
应用实例:
//角色类,复杂产品
class Actor {
private String type; //角色类型
private String sex; //性别
private String face; //脸型
private String costume; //服装
private String hairstyle; //发型
//get()和set()方法
}
//角色建造器:抽象建造者
abstract class ActorBuilder {
protected Actor actor = new Actor();
public abstract void buildType();
public abstract