建造者模式分为三部分:
- 建造对象:要被建造的对象,即产品。
- 建造者:建造产品的每个部件。
- 指挥者:指挥建造者依次建造产品的部件。
比如要组装一台电脑,建造者需要组装键盘、CPU、主板、显示器等等,指挥者则指挥建造者先组装主板,再装CPU、内存等等,组装完毕之后,建造者将返回一个产品对象,即组装好的电脑。
对象接口:
public interface Computer {
void CPU();
void mem();
void adapter();
void keyboard();
void mouse();
void fan();
void monitor();
void mainboard();
void chassis();
void show();
}
要被组装的对象:
public class Windows implements Computer {
@Override
public void CPU() {
System.out.println("CPU组装完成。");
}
@Override
public void mem() {
System.out.println("内存组装完成。");
}
@Override
public void adapter() {
System.out.println("适配器组装完成。");
}
@Override
public void keyboard() {
System.out.println("键盘组装完成。");
}
@Override
public void mouse() {
System.out.println("鼠标组装完成。");
}
@Override
public void fan() {
System.out.println("散热器组装完成。");
}
@Override
public void monitor() {
System.out.println("显示器组装完成。");
}
@Override
public void mainboard() {
System.out.println("主板组装完成。");
}
@Override
public void chassis() {
System.out.println("机箱组装完成。");
}
@Override
public void show() {
System.out.println("电脑组装完成!");
}
}
建造者:
public class ComputerBuilder {
private Computer computer = new Windows();
public void assemblingCPU() {
computer.CPU();
}
public void assemblingMem() {
computer.mem();
}
public void assemblingAdapter() {
computer.adapter();
}
public void assemblingKeyboard() {
computer.keyboard();
}
public void assemblingMouse() {
computer.mouse();
}
public void assemblingFan() {
computer.fan();
}
public void assemlingMonitor() {
computer.monitor();
}
public void assemblingMainboard() {
computer.mainboard();
}
public void assemblingChassis() {
computer.chassis();
}
public Computer getComputer() {
return computer;
}
}
指挥者:
public class BuilderDirector {
public void buildComputer(ComputerBuilder computerBuilder) {
computerBuilder.assemblingMainboard();
computerBuilder.assemblingCPU();
computerBuilder.assemblingMem();
computerBuilder.assemblingKeyboard();
computerBuilder.assemblingFan();
computerBuilder.assemblingChassis();
computerBuilder.assemblingAdapter();
computerBuilder.assemblingMouse();
computerBuilder.assemlingMonitor();
}
}
开始组装电脑:
public class Main {
public static void main(String[] args) {
BuilderDirector builderDirector = new BuilderDirector();
ComputerBuilder computerBuilder = new ComputerBuilder();
builderDirector.buildComputer(computerBuilder);
Computer computer = computerBuilder.getComputer();
computer.show();
}
}
输出:
主板组装完成。
CPU组装完成。
内存组装完成。
键盘组装完成。
散热器组装完成。
机箱组装完成。
适配器组装完成。
鼠标组装完成。
显示器组装完成。
电脑组装完成!
建造者模式可以对客户端隐藏建造细节,客户端只需要创建建造者和指挥者即可得到成品。