public class Computer {
//主机
private Master master;
//显示器
private Display display;
//键盘
private KeyBoard keyBoard;
public Master getMaster() {
return master;
}
public void setMaster(Master master) {
this.master = master;
}
public Display getDisplay() {
return display;
}
public void setDisplay(Display display) {
this.display = display;
}
public KeyBoard getKeyBoard() {
return keyBoard;
}
public void setKeyBoard(KeyBoard keyBoard) {
this.keyBoard = keyBoard;
}
}
public class Master {
private String cpu;
private String name;
public Master(String cpu, String name) {
this.cpu = cpu;
this.name = name;
}
}
public class Display {
private Integer size;
private String name;
public Display(Integer size, String name) {
this.size = size;
this.name = name;
}
}
public class KeyBoard {
private String color;
private String name;
public KeyBoard(String color, String name) {
this.color = color;
this.name = name;
}
}
public abstract class Builder{
protected Computer computer = new Computer();
//构建主机
public abstract void buildMaster();
//构建显示器
public abstract void buildDisplay();
//构建键盘
public abstract void buildKeyBoard();
public Computer getResult(){
return computer;
};
}
public class ComputerBuilder extends Builder {
@Override
public void buildMaster() {
System.out.println("构建主机");
computer.setMaster(new Master("Intel 酷睿i9 9900K","主机"));
}
@Override
public void buildDisplay() {
System.out.println("构建显示器");
computer.setDisplay(new Display(16,"防辐射显示器"));
}
@Override
public void buildKeyBoard() {
System.out.println("构建键盘");
computer.setKeyBoard(new KeyBoard("黑色","静音键盘"));
}
}
public class Director {
private Builder builder;
public Director(Builder builder){
this.builder = builder;
}
public Computer construct(){
builder.buildMaster();
builder.buildDisplay();
builder.buildKeyBoard();
return builder.getResult();
}
}
public class Client {
public static void main(String[] args) {
Builder builder = (Builder) XMLUtils.getBean();
Director director = new Director(builder);
director.construct();
}
}