mysterin / question_and_answer

1 stars 0 forks source link

建造者模式 #127

Closed mysterin closed 5 years ago

mysterin commented 5 years ago

角色

  1. 产品类
  2. 抽象建造者
  3. 具体建造者
  4. 指挥者(非必须)

产品类

以组装电脑为例:

public clss Computer {
    private String mainBoard;
    private String cpu;
    private String memory;
    private String hardDisk;
    // set/get
}

抽象建造者

public interface Builder {
    Builder mainBoard(String mainBoard);
    Builder cpu(String cpu);
    Builder memory(String memory);
    Builder hardDisk(String hardDisk);
    Computer build();
}

具体建造者

public class ComputerBuilder implements Builder {
    private Computer computer = new Computer();

    public Builder mainBoard(String mainBoard) {
        computer.setMainBoard(mainBoard);
        return this;
    }

    public Builder cpu(String cpu) {
        computer.setCpu(cpu);
        return this;
    }

    public Builder memory(String memory) {
        computer.setMemory(memory);
        return this;
    }

    public Builder hardDisk(String hardDisk) {
        computer.setHardDisk(hardDisk);
        return this;
    }

    public Computer build() {
        return computer;
    }
}

使用

public static void main(String[] args) {
    Builder builder = new ComputerBuilder();
    Computer computer = builder.mainBoard("技嘉主板").cpu("i7").memory("16G").hardDisk("1T").build();
}