建造者模式

概念:給出一個接口,以規範產品對象的各個組成成分的建造。這個接口規定要實現複製對象的哪些部分的創建,並不涉及具體的對象部件的創建。

應用場景:

  1. 需要生成的對象具有複雜的內部結構
  2. 需要生成的對象內部屬性本身相互依賴

與工廠模式的區別:建造者模式更加關注於零部件裝配的順序。

實例:

public class Person {
    private String head;
    private String body;
    private String foot;

    public String getHead() {
        return head;
    }

    public void setHead(String head) {
        this.head = head;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getFoot() {
        return foot;
    }

    public void setFoot(String foot) {
        this.foot = foot;
    }
}

public interface PersonBuilder {
    void builderHead();

    void builderBody();

    void builderFoot();

    Person builderPerson();
}

public class ManBuilder implements PersonBuilder {
    private Person person;

    public ManBuilder() {
        person = new Person();
    }

    public void builderHead() {
        person.setHead("頭:美國人鼻子尖藍眼睛");
    }

    public void builderBody() {
        person.setBody("身體:塊頭大");
    }

    public void builderFoot() {
        person.setFoot("尾:腿長");
    }

    public Person builderPerson() {
        return person;
    }
}

public class PersonDirector {
    public Person createPerson(PersonBuilder personBuilder) {
        personBuilder.builderHead();
        personBuilder.builderBody();
        personBuilder.builderFoot();
        return personBuilder.builderPerson();
    }

    public static void main(String[] args) {
        PersonDirector personDirector = new PersonDirector();
        Person person = personDirector.createPerson(new ManBuilder());
        System.out.println(person.getHead() + person.getBody() + person.getFoot());
    }
}

通過上述代碼,可以看出,其實就是將目標對象拆解成各個部分,通過一個接口抽象出需要創建哪些部分,最後通過這個接口的實現類,給各個部分賦值,並返回完整的目標對象。舉個例子,就相當於網絡遊戲裏的裝備欄,個人裝備有頭盔,衣服,褲子,武器等等,將這些部分通過一個建造者把他們組裝成一個整體。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章