在某些情況下,乙個物件會有一些重要的屬性,在它們沒有恰當的值之前,物件不能作為乙個完整的產品使用。比如,乙個電子郵件有發件人位址、收件人位址、主題、內容、附錄等部分,而在最起碼的收件人位址未被賦值之前,這個電子郵件不能發出。
建造者模式將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式是一步一步建立乙個複雜的物件,它允許使用者只通過指定複雜物件的型別和內容就可以構建它們,使用者不需要知道內部的具體構建細節。建造者模式屬於物件建立型模式。
builder:抽象建造者
concretebuilder:具體建造者
director:指揮者
product:產品角色
director和builder是聚合關係(**實現聚合的時候,成員物件通常採用建構函式注入,setter方法引數注入。)
以快餐店為例子
漢堡可樂這些就是產品
/*
* **類
*/public class meal
public void setfood(string food)
public string getdrink()
public void setdrink(string drink)
}
生產食物總得有步驟吧?定義乙個生產線生產**
/*
* **構造器
*/public abstract class mealbuilder
}
食物類和生產食物的步驟我們都寫好了,現在就可以生產各種我們要的**了,即具體的建造者
/*
* a**
*/public class meala extends mealbuilder
public void buildfood()
}
/*
* b**
*/public class mealb extends mealbuilder
public void buildfood()
}
但是客戶不是直接知道生產過程的,而是通過告訴服務員直接要什麼**然後服務員傳遞資訊給後廚指揮生產
/*
* 服務生
*/public class kfcwaiter
public meal construct()
}
測試類
設計模式之四 建造者模式
建造者模式也叫生成器模式 定義 講乙個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式的優點 封裝性 客戶端不必要知道產品內部組成的細節。建造者獨立,容易擴充套件 使用的場景 1.相同的方法,不同的執行順序,產生的不同的事件結果,採用建造者模式 2.多個部件或零件,都...
設計模式 四 建造者模式
目錄 前言 1 為什麼要用建造者模式 2 建造者模式怎麼用 3 工廠模式和建造者模式 4 結語 學會了建造者模式之後可能有的朋友疑問更深了,為啥我不能用工廠模式來解決呢,我把建立的 抽取到工廠中去,然後根據客戶端的選擇直接建立產品不就行了嗎?建造者模式是建立型模式中比較特別的乙個模式,但特別只是你主...
設計模式(四)建造者模式
奇怪,我怎麼感覺我寫過這個東西。好吧,我翻了一下,沒有寫。這個東西,和工廠模式差不多。差別在於 工廠模式是生產不同的物件。構建者相當於,選擇不同型號的配件來組裝成品。我突然記起來了,我真的沒有寫過這個東西。是以前看書的時候做過筆記而已。一,設定部件 典型的場景,比如qq秀裝備。設定衣服,帽帽,褲褲,...