Builder模式讓我想到一個詞“外包”,他把對象的創建外包給一個客戶類,並且這個“外包類”要一步一步地創建對象,但是他又不返回本身類的對象。當然,這只是個比方,不是很準確,其實Builder模式要解決的是這樣的問題:當我們要創建的對象很複雜的時候(通常是由很多其他的對象組合而成),我們要要複雜對象的創建過程和這個對象的表示(展示)分離開來,這樣做的好處就是通過一步步的進行復雜對象的構建,由於在每一步的構造過程中可以引入參數,使得經過相同的步驟創建最後得到的對象的展示不一樣。值得一提的是這個模式體現了自動化特點,要一個對象去創建別的對象,我們一個機器幫助我們更好地去做好創建工作,因爲只有機器才明白創建的細節,程序人員通常不知道我們new出來的對象的真正創建的細節,Builder模式典型結構圖:
下面的代碼來自於一位大牛的blog: http://www.phppan.com/?s=%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F