呵呵,我也看了設計模式的,但有一牛人用打比喻的手法,讓我們一邊看笑話(huà)的同時(shí),一邊深入理解了設計模式,看到欣喜若然,不敢獨善其身,想和大家一起分享,和上面的相得益彰:
創(chuàng )建型模式
1、FACTORY一追MM少不了請吃飯了,麥當勞的雞翅和肯德基的雞翅都是MM愛(ài)吃的東西,雖然口味有所不同,但不管你帶MM去麥當勞或肯德基,只管向服務(wù)員說(shuō)“來(lái)四個(gè)雞翅”就行了。麥當勞和肯德基就是生產(chǎn)雞翅的Factory
工廠(chǎng)模式:客戶(hù)類(lèi)和工廠(chǎng)類(lèi)分開(kāi)。消費者任何時(shí)候需要某種產(chǎn)品,只需向工廠(chǎng)請求即可。消費者無(wú)須修改就可以接納新產(chǎn)品。缺點(diǎn)是當產(chǎn)品修改時(shí),工廠(chǎng)類(lèi)也要做相應的修改。如:如何創(chuàng )建及如何向客戶(hù)端提供。
2、BUILDER—MM最?lèi)?ài)聽(tīng)的就是“我愛(ài)你”這句話(huà)了,見(jiàn)到不同地方的MM,要能夠用她們的方言跟她說(shuō)這句話(huà)哦,我有一個(gè)多種語(yǔ)言翻譯機,上面每種語(yǔ)言都有一個(gè)按鍵,見(jiàn)到MM我只要按對應的鍵,它就能夠用相應的語(yǔ)言說(shuō)出“我愛(ài)你”這句話(huà)了,國外的MM 也可以輕松搞掂,這就是我的“我愛(ài)你”builder。(這一定比美軍在伊拉克用的翻譯機好賣(mài))
建造模式:將產(chǎn)品的內部表象和產(chǎn)品的生成過(guò)程分割開(kāi)來(lái),從而使一個(gè)建造過(guò)程生成具有不同的內部表象的產(chǎn)品對象。建造模式使得產(chǎn)品內部表象可以獨立的變化,客戶(hù)不必知道產(chǎn)品內部組成的細節。建造模式可以強制實(shí)行一種分步驟進(jìn)行的建造過(guò)程。
3、FACTORY METHOD—請MM去麥當勞吃漢堡,不同的MM有不同的口味,要每個(gè)都記住是一件煩人的事情,我一般采用Factory?Method模式,帶著(zhù)MM到服務(wù)員那兒,說(shuō)“要一個(gè)漢堡”,具體要什么樣的漢堡呢,讓MM直接跟服務(wù)員說(shuō)就行了。
工廠(chǎng)方法模式:核心工廠(chǎng)類(lèi)不再負責所有產(chǎn)品的創(chuàng )建,而是將具體創(chuàng )建的工作交給子類(lèi)去做,成為一個(gè)抽象工廠(chǎng)角色,僅負責給出具體工廠(chǎng)類(lèi)必須實(shí)現的接口,而不接觸哪一個(gè)產(chǎn)品類(lèi)應當被實(shí)例化這種細節。
4、PROTOTYPE—跟MM用QQ聊天,一定要說(shuō)些深情的話(huà)語(yǔ)了,我搜集了好多肉麻的情話(huà),需要時(shí)只要copy出來(lái)放到QQ里面就行了,這就是我的情話(huà)prototype了。(100塊錢(qián)一份,你要不要)
原始模型模式:通過(guò)給出一個(gè)原型對象來(lái)指明所要創(chuàng )建的對象的類(lèi)型,然后用復制這個(gè)原型對象的方法創(chuàng )建出更多同類(lèi)型的對象。原始模型模式允許動(dòng)態(tài)的增加或減少產(chǎn)品類(lèi),產(chǎn)品類(lèi)不需要非得有任何事先確定的等級結構,原始模型模式適用于任何的等級結構。缺點(diǎn)是每一個(gè)類(lèi)都必須配備一個(gè)克隆方法。
5、SINGLETON—俺有6個(gè)漂亮的老婆,她們的老公都是我,我就是我們家里的老公Sigleton,她們只要說(shuō)道“老公”,都是指的同一個(gè)人,那就是我(剛才做了個(gè)夢(mèng)啦,哪有這么好的事)
單例模式:?jiǎn)卫J酱_保某一個(gè)類(lèi)只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統提供這個(gè)實(shí)例單例模式。單例模式只應在有真正的“單一實(shí)例”的需求時(shí)才可使用。
結構型模式
6、ADAPTER—在朋友聚會(huì )上碰到了一個(gè)美女Sarah,從香港來(lái)的,可我不會(huì )說(shuō)粵語(yǔ),她不會(huì )說(shuō)普通話(huà),只好求助于我的朋友kent了,他作為我和Sarah之間的Adapter,讓我和Sarah可以相互交談了(也不知道他會(huì )不會(huì )耍我)
適配器(變壓器)模式:把一個(gè)類(lèi)的接口變換成客戶(hù)端所期待的另一種接口,從而使原本因接口原因不匹配而無(wú)法一起工作的兩個(gè)類(lèi)能夠一起工作。適配類(lèi)可以根據參數返還一個(gè)合適的實(shí)例給客戶(hù)端。
7、BRIDGE—早上碰到MM,要說(shuō)早上好,晚上碰到MM,要說(shuō)晚上好;碰到MM穿了件新衣服,要說(shuō)你的衣服好漂亮哦,碰到MM新做的發(fā)型,要說(shuō)你的頭發(fā)好漂亮哦。不要問(wèn)我“早上碰到MM新做了個(gè)發(fā)型怎么說(shuō)”這種問(wèn)題,自己用BRIDGE組合一下不就行了
橋梁模式:將抽象化與實(shí)現化脫耦,使得二者可以獨立的變化,也就是說(shuō)將他們之間的強關(guān)聯(lián)變成弱關(guān)聯(lián),也就是指在一個(gè)軟件系統的抽象化和實(shí)現化之間使用組合/聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨立的變化。
8、COMPOSITE—Mary今天過(guò)生日。“我過(guò)生日,你要送我一件禮物。”“嗯,好吧,去商店,你自己挑。”“這件T恤挺漂亮,買(mǎi),這條裙子好看,買(mǎi),這個(gè)包也不錯,買(mǎi)。”“喂,買(mǎi)了三件了呀,我只答應送一件禮物的哦。”“什么呀,T恤加裙子加包包,正好配成一套呀,小姐,麻煩你包起來(lái)。”“……”,MM都會(huì )用Composite模式了,你會(huì )了沒(méi)有?
合成模式:合成模式將對象組織到樹(shù)結構中,可以用來(lái)描述整體與部分的關(guān)系。合成模式就是一個(gè)處理對象的樹(shù)結構的模式。合成模式把部分與整體的關(guān)系用樹(shù)結構表示出來(lái)。合成模式使得客戶(hù)端把一個(gè)個(gè)單獨的成分對象和由他們復合而成的合成對象同等看待。
9、DECORATOR—Mary過(guò)完輪到Sarly過(guò)生日,還是不要叫她自己挑了,不然這個(gè)月伙食費肯定玩完,拿出我去年在華山頂上照的照片,在背面寫(xiě)上“最好的的禮物,就是愛(ài)你的Fita”,再到街上禮品店買(mǎi)了個(gè)像框(賣(mài)禮品的MM也很漂亮哦),再找隔壁搞美術(shù)設計的Mike設計了一個(gè)漂亮的盒子裝起來(lái)……,我們都是Decorator,最終都在修飾我這個(gè)人呀,怎么樣,看懂了嗎?
裝飾模式:裝飾模式以對客戶(hù)端透明的方式擴展對象的功能,是繼承關(guān)系的一個(gè)替代方案,提供比繼承更多的靈活性。動(dòng)態(tài)給一個(gè)對象增加功能,這些功能可以再動(dòng)態(tài)的撤消。增加由一些基本功能的排列組合而產(chǎn)生的非常大量的功能。
10、FACADE—我有一個(gè)專(zhuān)業(yè)的Nikon相機,我就喜歡自己手動(dòng)調光圈、快門(mén),這樣照出來(lái)的照片才專(zhuān)業(yè),但MM可不懂這些,教了半天也不會(huì )。幸好相機有Facade設計模式,把相機調整到自動(dòng)檔,只要對準目標按快門(mén)就行了,一切由相機自動(dòng)調整,這樣 MM也可以用這個(gè)相機給我拍張照片了。
門(mén)面模式:外部與一個(gè)子系統的通信必須通過(guò)一個(gè)統一的門(mén)面對象進(jìn)行。門(mén)面模式提供一個(gè)高層次的接口,使得子系統更易于使用。每一個(gè)子系統只有一個(gè)門(mén)面類(lèi),而且此門(mén)面類(lèi)只有一個(gè)實(shí)例,也就是說(shuō)它是一個(gè)單例模式。但整個(gè)系統可以有多個(gè)門(mén)面類(lèi)。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。