設計模式(三)——Builder構建者模式

構建者模式

Builder構建者模式:「將一個複雜對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示。」
它屬於建立類模式,通常來講,若是一個對象的構建比較複雜,超出了構造函數所能包含的範圍,就能夠使用工廠模式和Builder模式,相對於工廠模式會產出一個完整的產品,Builder應用於更加複雜的對象的構建,甚至只會構建產品的一個部分,直白來講,就是使用多個簡單的對象一步一步構建一個複雜的對象。git

好比咱們要組裝一臺電腦,既要生產顯示器,又要生產鼠標,鍵盤,這時候咱們就用到構建者模式。設計模式

Computer類:

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

相關文章
相關標籤/搜索