在java的設計模式中
我大意分為三塊
創建型模式
結構型模式
行為模式
對其進行了相對詳細和幽默的風格講解
一創建型模式
PROTOTYPE
跟MM用QQ聊天
一定要說些深情的話語了
我搜集了好多肉麻的情話
需要時只要copy出來放到QQ裡面就行了
這就是我的情話prototype了
原始模型模式
通過給出一個原型對象來指明所要創建的對象的類型
然後用復制這個原型對象的方法創建出更多同類型的對象
原始模型模式允許動態的增加或減少產品類
產品類不需要非得有任何事先確定的等級結構
原始模型模式適用於任何的等級結構
缺點是每一個類都必須配備一個克隆方法
FACTORY
追MM少不了請吃飯了
麥當勞的雞翅和肯德基的雞翅都是MM愛吃的東西
雖然口味有所不同
但不管你帶MM去麥當勞或肯德基
只管向服務員說
來四個雞翅
就行了
麥當勞和肯德基就是生產雞翅的Factory
工廠模式
客戶類和工廠類分開
消費者任何時候需要某種產品
只需向工廠請求即可
消費者無須修改就可以接納新產品
缺點是當產品修改時
工廠類也要做相應的修改
如
如何創建及如何向客戶端提供
FACTORY METHOD
請MM去麥當勞吃漢堡
不同的MM有不同的口味
要每個都記住是一件煩人的事情
我一般采用Factory Method模式
帶著MM到服務員那兒
說
要一個漢堡
具體要什麼樣的漢堡呢
讓MM直接跟服務員說就行了
工廠方法模式
核心工廠類不再負責所有產品的創建
而是將具體創建的工作交給子類去做
成為一個抽象工廠角色
僅負責給出具體工廠類必須實現的接口
而不接觸哪一個產品類應當被實例化這種細節
SINGLETON
俺有
個漂亮的老婆
她們的老公都是我
我就是我們家裡的老公Sigleton
她們只要說道
老公
都是指的同一個人
那就是我(剛才做了個夢啦
哪有這麼好的事
單例模式
單例模式確保某一個類只有一個實例
而且自行實例化並向整個系統提供這個實例單例模式
單例模式只應在有真正的
單一實例
的需求時才可使用
二結構型模式
BRIDGE
早上碰到MM
要說早上好
晚上碰到MM
要說晚上好
碰到MM穿了件新衣服
要說你的衣服好漂亮哦
碰到MM新做的發型
要說你的頭發好漂亮哦
不要問我
早上碰到MM新做了個發型怎麼說
這種問題
自己用BRIDGE組合一下不就行了
橋梁模式
將抽象化與實現化脫耦
使得二者可以獨立的變化
也就是說將他們之間的強關聯變成弱關聯
也就是指在一個軟件系統的抽象化和實現化之間使用組合/聚合關系而不是繼承關系
從而使兩者可以獨立的變化
FACADE
我有一個專業的Nikon相機
我就喜歡自己手動調光圈
快門
這樣照出來的照片才專業
但MM可不懂這些
教了半天也不會
幸好相機有Facade設計模式
把相機調整到自動檔
只要對准目標按快門就行了
一切由相機自動調整
這樣MM也可以用這個相機給我拍張照片了
門面模式
外部與一個子系統的通信必須通過一個統一的門面對象進行
門面模式提供一個高層次的接口
使得子系統更易於使用
每一個子系統只有一個門面類
而且此門面類只有一個實例
也就是說它是一個單例模式
但整個系統可以有多個門面類
DECORATOR
Mary過完輪到Sarly過生日
還是不要叫她自己挑了
不然這個月伙食費肯定玩完
拿出我去年在華山頂上照的照片
在背面寫上
最好的的禮物
就是愛你的Fita
再到街上禮品店買了個像框(賣禮品的MM也很漂亮哦)
再找隔壁搞美術設計的Mike設計了一個漂亮的盒子裝起來……
我們都是Decorator
最終都在修飾我這個人呀
怎麼樣
看懂了嗎?裝飾模式
裝飾模式以對客戶端透明的方式擴展對象的功能
是繼承關系的一個替代方案
提供比繼承更多的靈活性
動態給一個對象增加功能
這些功能可以再動態的撤消
增加由一些基本功能的排列組合而產生的非常大量的功能
ADAPTER
在朋友聚會上碰到了一個美女Sarah
從香港來的
可我不會說粵語
她不會說普通話
只好求助於我的朋友kent了
他作為我和Sarah之間的Adapter
讓我和Sarah可以相互交談了
適配器(變壓器)模式
把一個類的接口變換成客戶端所期待的另一種接口
從而使原本因接口原因不匹配而無法一起工作的兩個類能夠一起工作
適配類可以根據參數返還一個合適的實例給客戶端
三行為模式
MEMENTO
同時跟幾個MM聊天時
一定要記清楚剛才跟MM說了些什麼話
不然MM發現了會不高興的哦
幸虧我有個備忘錄
剛才與哪個MM說了什麼話我都拷貝一份放到備忘錄裡面保存
這樣可以隨時察看以前的記錄啦
備忘錄模式
備忘錄對象是一個用來存儲另外一個對象內部狀態的快照的對象
備忘錄模式的用意是在不破壞封裝的條件下
將一個對象的狀態捉住
並外部化
存儲起來
從而可以在將來合適的時候把這個對象還原到存儲起來的狀態
STRATEGY
跟不同類型的MM約會
要用不同的策略
有的請電影比較好
有的則去吃小吃效果不錯
有的去海邊浪漫最合適
單目的都是為了得到MM的芳心
我的追MM錦囊中有好多Strategy哦
策略模式
策略模式針對一組算法
將每一個算法封裝到具有共同接口的獨立的類中
從而使得它們可以相互替換
策略模式使得算法可以在不影響到客戶端的情況下發生變化
策略模式把行為和環境分開
環境類負責維持和查詢行為類
各種算法在具體的策略類中提供
由於算法和環境獨立開來
算法的增減
修改都不會影響到環境和客戶端
COMMAND
俺有一個MM家裡管得特別嚴
沒法見面
只好借助於她弟弟在我們倆之間傳送信息
她對我有什麼指示
就寫一張紙條讓她弟弟帶給我
這不
她弟弟又傳送過來一個COMMAND
為了感謝他
我請他吃了碗雜醬面
哪知道他說
我同時給我姐姐三個男朋友送COMMAND
就數你最小氣
才請我吃面
:
( 命令模式
命令模式把一個請求或者操作封裝到一個對象中
命令模式把發出命令的責任和執行命令的責任分割開
委派給不同的對象
命令模式允許請求的一方和發送的一方獨立開來
使得請求的一方不必知道接收請求的一方的接口
更不必知道請求是怎麼被接收
以及操作是否執行
何時被執行以及是怎麼被執行的
系統支持命令的撤消
OBSERVER
想知道咱們公司最新MM情報嗎?加入公司的MM情報郵件組就行了
tom負責搜集情報
他發現的新情報不用一個一個通知我們
直接發布給郵件組
我們作為訂閱者(觀察者)就可以及時收到情報啦
觀察者模式
觀察者模式定義了一種一隊多的依賴關系
讓多個觀察者對象同時監聽某一個主題對象
這個主題對象在狀態上發生變化時
會通知所有觀察者對象
使他們能夠自動更新自己
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27206.html