¡工廠方法(
factory
method pattern
)模式起點:將程式中建立物件的操作單獨進行處理,大大提高了系統擴充套件的柔性,介面的抽象化處理給相互依賴的物件建立提供了最好的抽象模式。
典型應用:工廠方法模式是最簡單也最容易理解的模式之一。其關注的核心是對於物件建立這件事兒的分離。
¡單例(
singleton
pattern
)模式起點:乙個類只有乙個例項,且提供乙個訪問全域性點的方式,更加靈活地保證了例項的建立和訪問約束,並且唯一約束的實施由類本身實現。
典型應用:乙個類只有乙個例項,經常被應用於
façade
模式,稱為單例外觀。
¡命令(
command
pattern
)模式起點:將請求封裝為物件,從而將命令的執行和責任分開。通常在佇列中等待命令,這和現實多麼相似呀。如果你喜歡發號施令,請考慮你的
icommand
吧。典型應用:選單系統。
¡策略(
strategy
pattern
)模式起點:策略模式,將易於變化的部分封裝為介面,通常
strategy
封裝一些運算法則,使之能互換。
典型應用:資料層常考慮以策略提供演算法和資料的分離。
¡迭代器(
iterator
pattern
)模式起點:相信任何的系統中,都會用到陣列、集合、鍊錶、佇列這樣的型別吧,那麼你就不得不關心迭代模式的來龍去脈。在遍歷演算法中,迭代模式提供了遍歷的順序訪問容器,
gof給出的定義為:提供一種方法訪問乙個容器(
container
)物件中各個元素,而又無須暴露該物件的內部細節。
典型應用:
.net
中就是應用了迭代器來建立用於
foreach
的集合。
¡模板方法(
template
method pattern
)模式起點:顧名思義,模板方法就是在父類中定義模板,然後由子類實現。具體的實現一般由父類定義演算法的骨架,然後將演算法的某些步驟委託給子類。
典型應用:
asp .net
的page類。¡
觀察者(
observer
pattern
)模式起點:定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。觀察者和被觀察者的分開,為模組劃分提供了清晰的界限。
典型應用:在
.net
中使用委託和事件可以更好地實現觀察者模式,事件的註冊和撤銷不就對應著觀察者對其物件的觀察嗎?
¡職責鏈(
chain of
responsibility pattern
)模式起點:將操作組成乙個鍊錶,通過遍歷操作鍊錶找到合適的處理器。通過統一的介面,被多個處理器實現,每個處理器都有後繼處理器,可以將請求沿著處理器鏈傳遞。
典型應用:
gui系統的事件傳播。
¡橋接(
bridge
pattern
)模式起點:把實現和邏輯分開,對於我們深刻理解物件導向聚合復用的思想甚有助益。
典型應用:多版本
.net framework
通過環境變數與對應版本應用建立橋梁。
¡**(
proxy
pattern
)模式起點:將複雜的邏輯封裝起來,通過**物件控制實際物件的建立和訪問,由**物件遮蔽原有邏輯的複雜性,同時控制其可訪問性。
典型應用:
wcf服務**。
¡裝飾器(
decorator
pattern
)模式起點:為原有系統,動態地增加或者刪除狀態和行為,在繼承被裝飾類的同時包含被裝飾類的例項成員。
典型應用:
.net
中stream
的設計。
¡門面(
façade
pattern
)模式起點:將表現層和邏輯層隔離,封裝底層的複雜處理,為使用者提供簡單的介面,這樣的例子隨處可見。門面模式很多時候更是一種系統架構的設計,在很多專案中,都實現了門面模式的介面,為複雜系統的解耦提供了最好的解決方案。
典型應用:
wsdl
就是乙個典型的平台無關的門面應用。
¡組合(
composite
pattern
)模式起點:不管是個體還是元件,都包含公共的操作介面,通過同樣的方式來處理乙個組合中的所有物件。元件的典型操作包括:增加、刪除、查詢、分組和獲取子元素等。
典型應用:樹形結構的資料組織。
¡介面卡(
adapter
pattern
)模式起點:在原型別不做任何改變的情況下,擴充套件了新的介面,靈活且多樣地適配一切舊俗。這種打破舊框框、適配新格局的思想,是物件導向的精髓。以繼承方式實現類的
adapter
模式和以聚合方式實現物件的
adapter
模式,各有千秋,各取所長。看來,把它叫做包裝器一點也不為過。
典型應用:
rcw(
runtime callable
)在com interop
中的應用。
模式本身還有很多的故事和細節,在《設計模式:可復用物件導向軟體的基礎》中總結了
23種設計模式,其大致的分類如表
3-2所示。
表3-2
經典設計模式類別
模式建立型模式
工廠方法
抽象工廠
單例 建立者
原型模式
結構型模式
橋接
介面卡
組合
外觀 裝飾
享元 **
行為型模式
模板方法
迭代器
中介者
職責鏈
直譯器
命令 觀察者
備忘錄
狀態模式
策略模式
訪問者
本文節選自《你必須知道的
.net(第2
版)》一書
圖書詳細資訊
:
創業的起點
親愛的朋友們 無論您現在是學生還是上班族或者是個純粹的無業遊民,都應該為自己的未來籌畫過 同時,您一定想過在不久的將來能夠擁有自己的店面自己的公司。朋友們趁著您現在還有股為自己事業打拼的激情和熱情,敬請您在百忙之中抽出3 5分鐘的時間來閱讀這篇文章.當今社會為了滿足物質上與精神上的滿足,我們需要不斷...
最初的起點
python沒有系統學過,之前只是用過matlab,因為python基礎不牢,所以很多時候對於資料不清楚怎麼處理,這裡,將之前碰到的資料給羅列一下,方便自己記憶。基本上一定有說的不對的地方,敬請大家批評指正 1 list,很常見,索引也比較簡單,list i list 1,1 list 1 2 na...
新,新的起點
在wmy的大力慫恿下,參加了acm集訓 每天被18學長,yts大佬以及最早去機房最晚回宿舍的寢室妹子感染著,深深地感覺到了自己的弱小,能力上是,性格上也是。如果說,高中跟wmy一樣,好好的學競賽,認認真真地刷題,現在的處境會不會有所不同呢?嘛,雖然我心裡知道是不可能的,現在的自己貌似比高中還要懶,還...