Builder構建者模式:「將一個複雜對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示。」
它屬於建立類模式,通常來講,若是一個對象的構建比較複雜,超出了構造函數所能包含的範圍,就能夠使用工廠模式和Builder模式,相對於工廠模式會產出一個完整的產品,Builder應用於更加複雜的對象的構建,甚至只會構建產品的一個部分,直白來講,就是使用多個簡單的對象一步一步構建一個複雜的對象。git
好比咱們要組裝一臺電腦,既要生產顯示器,又要生產鼠標,鍵盤,這時候咱們就用到構建者模式。設計模式
package designpattern.constructor; /** * @author liuyj * @Title: Computer * @create 2020-06-10 17:21 * @ProjectName demo-designpattern * @Description: TODO */ public class Computer { //顯示器 private String displayer; //主機 private String mainUnit; //鼠標 private String mouse; //鍵盤 private String keyboard; public String getDisplayer() { return displayer; } public void setDisplayer(String displayer) { this.displayer = displayer; } public String getMainUnit() { return mainUnit; } public void setMainUnit(String mainUnit) { this.mainUnit = mainUnit; } public String getMouse() { return mouse; } public void setMouse(String mouse) { this.mouse = mouse; } public String getKeyboard() { return keyboard; } public void setKeyboard(String keyboard) { this.keyboard = keyboard; } @Override public String toString() { return "Computer{" + "displayer='" + displayer + '\'' + ", mainUnit='" + mainUnit + '\'' + ", mouse='" + mouse + '\'' + ", keyboard='" + keyboard + '\'' + '}'; } }
package designpattern.constructor; /** * @author liuyj * @Title: ComputerBuilder * @create 2020-06-10 17:25 * @ProjectName demo-designpattern * @Description: 構建者類 */ public class ComputerBuilder { private Computer computer=new Computer(); public void installDisplayer(String displayer){ computer.setDisplayer(displayer); } public void installMainUnit(String mainUnit){ computer.setMainUnit(mainUnit); } public void installMouse(String mouse){ computer.setMouse(mouse); } public void installKeyBoard(String keyboard){ computer.setKeyboard(keyboard); } public Computer getComputer() { return computer; } }
package designpattern.constructor; /** * @author liuyj * @Title: ConstructorTest * @create 2020-06-10 17:33 * @ProjectName demo-designpattern * @Description: 測試類 */ public class ConstructorTest { public static void main(String[] args) { ComputerBuilder computerBuilder=new ComputerBuilder(); computerBuilder.installDisplayer("顯示器"); computerBuilder.installMainUnit("主機"); computerBuilder.installKeyBoard("鍵盤"); computerBuilder.installMouse("鼠標"); Computer computer=computerBuilder.getComputer(); System.out.println(computer); } }
代碼實例:
設計模式demoide