23种设计模式之建造者模式
模式结构
- 产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。
- 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。
- 具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。
- 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。
案例
public class Computer {
private String cpu;
private String mainBoard;
private String videoCard;
public String getCpu() {
return cpu;
}
public void setCpu(String cpu) {
this.cpu = cpu;
}
public String getMainBoard() {
return mainBoard;
}
public void setMainBoard(String mainBoard) {
this.mainBoard = mainBoard;
}
public String getVideoCard() {
return videoCard;
}
public void setVideoCard(String videoCard) {
this.videoCard = videoCard;
}
}
public abstract class Builder {
private Computer computer = new Computer();
public abstract void buildCpu();
public abstract void buildMainBoard();
public abstract void buildVideoCard();
public Computer bulidComputer(){
return computer;
}
}
public class ConcreteBulider extends Builder {
@Override
public void buildCpu() {
System.out.println("builder cpu");
}
@Override
public void buildMainBoard() {
System.out.println("builder mainBoard");
}
@Override
public void buildVideoCard() {
System.out.println("builder videoCard");
}
}
public class Director {
private Builder builder;
public Director(Builder builder){
this.builder = builder;
}
public Computer construct(){
builder.buildCpu();
builder.buildMainBoard();
builder.buildVideoCard();
return builder.bulidComputer();
}
}
public class BuilderTest {
public static void main(String[] args) {
Builder builder = new ConcreteBulider();
Director director = new Director(builder);
Computer computer = director.construct();
}
}