前言
該設計模式系列爲閱讀《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。