建造者模式包含四个角色:
Builder:抽象建造者
ConcreteBuilder:具体建造者
Director:指挥者
Product:产品角色
Builder:
public abstract class Builder {
//第一步,装CPU
public abstract void BuilderCPU();
//第二步,装主板
public abstract void BuilderMainboard();
//第三步,装硬盘
public abstract void BuilderHD();
//返回产品,获得组装好的电脑
public abstract Computer getComputer();
}
ConcreteBuilder:
public class ConcreteBuilder extends Builder{
//创建产品实例
Computer computer = new Computer();
//组装产品
@Override
public void BuilderCPU() {
// TODO Auto-generated method stub
computer.add("cpu");
}
@Override
public void BuilderMainboard() {
// TODO Auto-generated method stub
computer.add("主板");
}
@Override
public void BuilderHD() {
// TODO Auto-generated method stub
computer.add("硬盘");
}
@Override
public Computer getComputer() {
// TODO Auto-generated method stub
return computer;
}
}
Director:
public class Director {
//指挥装机人员装电脑
public void Construct(Builder builder){
builder.BuilderCPU();
builder.BuilderMainboard();
builder.BuilderHD();
}
}
Product:
public class Computer {
//电脑组件的集合
private List<String> parts = new ArrayList<>();
//用于将组件组装到电脑里
public void add(String part){
parts.add(part);
}
public void show(){
for(int i = 0; i < parts.size() ;i++){
System.out.println("组装了"+parts.get(i));
}
System.out.println("电脑组装完成");
}
}
BuilderPattern:
public class BuilderPattern {
public static void main(String[] args) {
//找到该店的老板和装机人员
Director director = new Director();
Builder builder = new ConcreteBuilder();
//老板叫人去装电脑
director.Construct(builder);
//装完后,组装人员拿来装好的电脑
Computer computer = builder.getComputer();
//把电脑拿给小成
computer.show();
}
}
输出结果:
组装了cpu
组装了主板
组装了硬盘
电脑组装完成