模式的起點

2022-04-07 04:12:46 字數 3101 閱讀 2733

¡工廠方法(

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一樣,好好的學競賽,認認真真地刷題,現在的處境會不會有所不同呢?嘛,雖然我心裡知道是不可能的,現在的自己貌似比高中還要懶,還...