天天看點

大話設計模式之建造者模式

        盤古開辟了天地,用身軀造出日月星辰、山川草木。那殘留在天地間的濁氣慢慢化作蟲魚鳥獸,為這寂靜的世界增添了生氣。這時,有一位女神女娲,在這莽莽的原野上行走。她放眼四望,山嶺起伏,江河奔流,叢林茂密,草木争輝,天上百鳥飛鳴,地上群獸奔馳,水中魚兒嬉戲,草中蟲之豸跳躍,這世界按說也點綴得相當美麗了。但是她總覺得有一種說不出的寂寞,越看越煩,孤寂感越來越強烈,連自己也弄不清楚這是為什麼。與山川草木訴說心中的煩躁,山川草木根本不懂她的話;對蟲魚鳥獸傾吐心事,蟲魚鳥獸哪能了解她的苦惱。

        她頹然坐在一個池塘旁邊,茫然對池塘中自己的影子。忽然一片樹葉飄落池中,靜止的池水泛起了小小的漣漪,使她的影子也微微晃動起來。她突然覺得心頭的結解開了,是呀!為什麼她會有那種說不出的孤寂感?原來是世界是缺少一種像她一樣的生物。想到這兒,她馬上用手在池邊挖了些泥土,和上水,照着自己的影子捏了起來。捏着捏着,捏成了一個小小的東西,模樣與女娲差不多,也有五官七竅,雙手兩腳。捏好後往地上一放,居然活了起來。女娲一見,滿心歡喜,接着又捏了許多。她把這些小東西叫作“人”。今天我們的大話設計就從女娲抟土造人的故事開始說起,女娲要建造一個人,那首先要造頭,身體,胳膊和腿,這就關乎到一個制造工序的問題,不知道讀者有沒有這樣的感覺,建造者模式和工程模式很接近,但是建造者模式提供了一個更加細粒度的對象的建造過程,我們先來看一下,建造者模式的結構圖:

大話設計模式之建造者模式

        依然以我們上述的女娲抟土造人為例,看看我們的代碼,首先,女娲要先建立一個需要建造的對象,如下:

          然後有一個構造者的接口,其中包括了建造者會使用的建造過程

          有了建造者之後,需要有一個指揮家來訓示建造的過程:

        這樣,女王抟土造人的過程就完成了,從代碼角度來說, 如果我們希望分離複雜類型建構規則和類型内部組成,或者希望把相同的建構過程用于建構不同類型的時候可以考慮使用建造者模式。從應用角度來說, 如果我們希望解耦産品的建立過程和産品的具體配件,或者我們希望為所有産品的建立複用一套穩定并且複雜的邏輯的時候可以考慮使用建造者模式。設計之旅,未完待續......

繼續閱讀