1類圖
1計算機抽象類即Product角色
public abstract class Computer {
protected String mBoard;
protected String mDisplay;
protected String mOS;
protected Computer(){}
public void setBoard(String mBoard) {
this.mBoard = mBoard;
}
public void setDisplay(String mDisplay) {
this.mDisplay = mDisplay;
}
public abstract void setOS();
@Override
public String toString() {
return "Computer [mBoard=" + mBoard + ", mDisplay=" + mDisplay+ ", mOS=" + mOS + "]";
}
}
2具體的Computer類
public class Macbook extends Computer {
protected Macbook(){}
@Override
public void setOS() {
mOS = "Mac OS X 10.10";
}
}
3抽象Builder類
public abstract class Builder {
public abstract void buildBoard(String board);
public abstract void buildDisplay(String display);
public abstract void buildOS();
public abstract Computer create();
}
4具體Builder類
public class MacbookBuilder extends Builder {
private Computer mComputer = new Macbook();
@Override
public void buildBoard(String board) {
mComputer.setBoard(board);
}
@Override
public void buildDisplay(String display) {
mComputer.setDisplay(display);
}
@Override
public void buildOS() {
mComputer.setOS();
}
@Override
public Computer create() {
return mComputer;
}
}
5Director 負責構造Computer
public class Director {
Builder mBuilder = null;
public Director(Builder builder) {
mBuilder = builder;
}
public void construct(String board,String display){
mBuilder.buildBoard(board);
mBuilder.buildDisplay(display);
mBuilder.buildOS();
}
}
6測試
public class test {
public static void main(String[] args) {
Builder builder = new MacbookBuilder();
Director pcDirector = new Director(builder);
pcDirector.construct("英特爾主板", "Retina顯示屏");
System.out.println(builder.create().toString());
}
}