Java 建造者模式

描述:將一個複雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。建造模式是將複雜的內部創建封裝在內部,對於外部調用的人來說,只需要傳入建造者和建造工具,對於內部是如何建造成成品的,調用者無需關心。“建造的內容”是由建造者實現,“建造的順序”由指導者決定。
與抽象工廠的區別:Builder模式遵循一定的步驟一步一步的創建對象,這樣一來,按照時間順序創建對象就顯得非常重要了。


class Person {
    String head, body, foot;

    public String toString() {
        return head + body + foot;
    }
}
//抽象的建造者
interface BuildPerson {
    void head();

    void body();

    void foot();
    //建造者返回一個建造好的person
    Person getPerosn();
}
//男人的建造者
class BuildMan implements BuildPerson {
    private Person person;

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

    public void head() {
        person.head = "構造一個男人的頭";
    }

    public void body() {
        person.body = "構造一個男人的身體";
    }

    public void foot() {
        person.foot = "構造一個男人的腳";
    }

    public Person getPerosn() {
        // TODO Auto-generated method stub
        return person;
    }

}
//女人的建造者
class BuildWoMan implements BuildPerson {
    private Person person;

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

    public void head() {
        person.head = "構造一個女人的頭";
    }

    public void body() {
        person.body = "構造一個女人的身體";
    }

    public void foot() {
        person.foot = "構造一個女人的腳";
    }

    public Person getPerosn() {
        // TODO Auto-generated method stub
        return person;
    }

}
//指導者
class Director {
    public Person construct(BuildPerson builder) {
        builder.head();
        builder.body();
        builder.foot();
        return builder.getPerosn();
    }
}
//客戶端
public class Client {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Director director = new Director();
        //建造一個男人,傳入男人的建造者
        Person person = director.construct(new BuildMan());
        System.out.println(person);
        //建造一個女人,傳入女人的建造者
        person = director.construct(new BuildWoMan());
        System.out.println(person);
    }

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