设计模式建造者模式
本文最后更新于:2024年11月10日 下午
设计模式建造者模式
实例
定义计算机抽象类 Computer与具体产品类 MacBook
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 public abstract class Computer { protected String mBoard; protected String mDisplay; protected String mOs; protected Computer () { } public void setBoard (String board) { mBoard=board; } public void setDisplay (String display) { this .mDisplay = display; } public abstract void setOs () ; @Override public String toString () { return "Computer{" + "mBoard='" + mBoard + '\'' + ", mDisplay='" + mDisplay + '\'' + ", mOs='" + mOs + '\'' + '}' ; } }public class MacBook extends Computer { protected MacBook () { } @Override public void setOs () { mOs="Mac OS X 12" ; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 public abstract class Builder { abstract void buildBoard (String board) ; abstract void buildDisplay (String display) ; abstract void buildOs () ; abstract Computer build () ; }public class MacBookBuilder extends Builder { private Computer mComputer=new MacBook(); @Override void buildBoard (String board) { mComputer.setBoard(board); } @Override void buildDisplay (String display) { mComputer.setDisplay(display); } @Override void buildOs () { mComputer.setOs(); } @Override Computer build () { return mComputer; } }
定义Director类,负责具体的构造 Computer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class Director { Builder mBuilser = null ; public Director (Builder builer) { this .mBuilser = builer; } public void construct (String board,String display) { mBuilser.buildDisplay(display); mBuilser.buildBoard(board); mBuilser.buildOs(); } }
1 2 3 4 5 6 7 8 9 10 11 12 public class Test { public static void main (String[] args) { Builder builder = new MacBookBuilder(); Director pcDirector = new Director(builder); pcDirector.construct("英特尔主板" ,"Retina显示器" ); Computer computer = builder.build(); System.out.println(computer.toString()); } }