java設計模式連載(3) --建造者模式
意圖:
將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
適用性:
- 當建立複雜物件的演算法應該獨立於該對象的組成部分以及它們的裝配方式時。
- 當構造過程必須允許被構造的對象有不同的表示時。
執行個體:
1. 定義一個電腦構建者介面
package Builder_Pattern;public interface ComputerBuilder { public void buildDisplayer(); public void buildMainframe(); public void buildDataline(); public Computer buildComputer(); }
2. 定義一個通用電腦類
package Builder_Pattern;public class Computer{private String displayer; private String mainframe; private String dataline; public String getDisplayer() {return displayer;}public void setDisplayer(String displayer) {this.displayer = displayer;}public String getMainframe() {return mainframe;}public void setMainframe(String mainframe) {this.mainframe = mainframe;}public String getDataline() {return dataline;}public void setDataline(String dataline) {this.dataline = dataline;}}
3. 定義一個主管,管理構建電腦的人
package Builder_Pattern;public class ComputerDirector {public Computer constructComputer(ComputerBuilder cb){ cb.buildDisplayer(); cb.buildMainframe(); cb.buildDataline(); return cb.buildComputer(); }}
4. 定義一個PC機 ,繼承通用電腦這個類。或者可以再定義大型電腦
package Builder_Pattern;public class PC extends Computer{ }
5. 定義一個專門建造PC機的構造者
package Builder_Pattern;public class PCBuilder implements ComputerBuilder {private Computer computer; public PCBuilder(){ computer = new PC(); } @Overridepublic Computer buildComputer() { return computer;}@Overridepublic void buildDataline() { computer.setDataline("構建個人電腦資料線");}@Overridepublic void buildDisplayer() { computer.setDisplayer("構建個人電腦顯示器");}@Overridepublic void buildMainframe() { computer.setMainframe("構建個人電腦主機");}}
6. 測試這個模式
package Builder_Pattern;public class Test{ public static void main(String[] args) { //執行個體化一個電腦構建者 ComputerDirector computerDirector = new ComputerDirector(); Computer computer = computerDirector.constructComputer( new PCBuilder()); System.out.println(computer.getDisplayer()); System.out.println(computer.getMainframe()); System.out.println(computer.getDataline()); }}
7. 多謝瀏覽,歡迎斧正。