秒懂設計模式(一): Builder模式

前言

該設計模式系列爲閱讀《Android源碼設計模式解析與實戰》一書過程中的一些筆記,以及個人的理解。只是想把設計模式理解的更加透徹,說的更加簡單。當然,說的好,不如做的好。學習後,也要儘量學會在項目中實戰。設計模式,不是把一件事情弄的更復雜,而是弄的更加簡單。我認爲,這是設計模式好壞的標準。有許多理解不到位的地方,望朋友們多多指教。

定義

將一個複雜對象的構造過程分離,使得同樣的構造過程可以創建不同的表示;

個人理解

TMD就像同樣是一場考試,考試是一個過程,全班55個人做會交出55張不同的考卷,秒懂了吧!

代碼示例

// 考卷 抽象類 角色 product
abstract class ExaminationPaper {
    private String tianKongTi;
    private String zuoWenTi;

    protect ExaminationPaper(){
    }
    //作答填空題
    public void setTianKong(String tianKongAnswer){
        tianKongTi=tianKongAnswer;
    }
    //作答作文題
    public abstract void setZuoWent();

}
// 小明的考卷 考卷的實體類
class XiaoMing'Paper extends ExaminationPaper{
    public void setZuoWen(){
        zuoWenTi="大家好,我是小明,我一定要拿第一名";
    }
}

// 55個同學 抽象builder
abstract class ExaminationBuilder{
    public abstarct void tianKongBuilder(String tianKongAnswer);
    public abstarct void zuoWenBuilder();
    public abstarct ExaminationPaper create();
}
// 小明這位同學  實體
class xiaoMingBuilder extends ExaminationBuilder{
    private ExaminationPaper paper;

    public xiaoMingBuilder(){
        paper=new XiaoMing'Paper();
    }

    public xiaoMingBuilder tianKongBuilder(String tianKongAnswer){
        paper.setTianKong(tianKongAnswer);
    }
    public xiaoMingBuilder zuoWenBuilder(){
        paper.setZuoWen();
    }
    public ExaminationPaper ExaminationPaper create(){
        return paper;
    }
}
// Main
class Main{
    void main(){
        ExaminationBuilder builder =new xiaoMingBuilder();
        builder.tianKongBuilder("小明做的填空題")
    }
}

分析

這個適用於“產品”這類對象的創建,有上面可知,假如我們將考卷作爲一種產品,首先考卷是實現把題目出好了的,不同的學生拿到的考卷是一樣的。所以,我們把這些抽象出來。但是呢?真正考試給不同的學生做的時候就會有不同的結果;所以,每個不同的學生會對“考卷”這款產品進行一次深加工,我們建立起不同的產品模型;
同樣,作爲對產品深加工的同學們都會要幹同樣的事情,就是給每個題目作答,然後交出試卷。我們首先,把要做題的這一羣同學抽象出來。再給每個同學寫一個實現體。這樣我們做捲開始啦,首先new一個人,然後讓這個同學輸入答案就好。

小結

我們可以從工業生產的角度出發,那麼builder模式我們可以把它認爲是一個手工作坊,或者說就是一種個性化定製工廠。原料是一致的,通過加工,我麼能夠得到不同用戶個性定製化的產品。比如文化衫,我們可以把空白的文化衫抽離出來,
並面對不同個性化的要求產出不同的產品。記住,文化衫是我們的product,而用戶是我們的builder。

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