模式的起點
模式的起點
¡ 工廠方法(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 Wrapper)在COM Interop中的應用。
模式本身還有很多的故事和細節,在《設計模式:可複用物件導向軟體的基礎》中總結了23種設計模式,其大致的分類如表3-2所示。
表3-2 經典設計模式
類 別 |
模 式 |
建立型模式 |
工廠方法 |
|
抽象工廠 |
|
單例 |
|
建立者 |
|
原型模式 |
結構型模式 |
橋接 |
|
介面卡 |
|
組合 |
|
外觀 |
|
裝飾 |
|
享元 |
|
代理 |
行為型模式 |
模板方法 |
|
迭代器 |
|
中介者 |
|
職責鏈 |
|
直譯器 |
|
命令 |
|
觀察者 |
|
備忘錄 |
|
狀態模式 |
|
策略模式 |
|
訪問者 |
本文節選自《你必須知道的.NET(第2版)》一書
圖書詳細資訊:http://space.itpub.net/13164110/viewspace-704514
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13164110/viewspace-704753/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自學的起點
- Docker模式的興起Docker模式
- OOM的起點到終點OOM
- Canvas的絢爛起點Canvas
- 起點:相見
- 新專案,新的起點,每天進步一點點
- arcgis api for flex求線段的起點,終點和中點APIFlex
- 一起學shell(十一)之安全的shell指令碼:起點指令碼
- 科技進化的終點,與榮耀全場景的起點
- 或許是夢開始的起點?
- 一起學Scala 模式匹配模式
- 一起聊聊PHP的幾個設計模式PHP設計模式
- 工廠模式-將物件的建立封裝起來模式物件封裝
- 零起點的開源社群貢獻指南
- 關於模式爭論的一點點思考模式
- C程式起點main函式C程式AI函式
- 一起來學習設計模式:裝飾器模式設計模式
- Redis的問題?這是一個很好的起點。Redis
- 演算法學習之旅,終點亦是起點演算法
- Android測量佈局繪製的起點Android
- 通過IBM CATE認證,新的起點!IBM
- [專案管理]團隊管理中的起點:尊重專案管理
- 一起學模式之抽象工廠模式抽象
- Kotlin學習之起點篇Kotlin
- 學會程式碼不是測試的終點而是測試開發的起點
- 單件模式的實現要點模式
- 模式新手的FACTORY看法。請指點模式
- 關於Decorator模式的幾點想法模式
- 多點對多點網路模式的網路特徵模式特徵
- 高起點起步——中國企業的ERP策略(轉)
- web報表軟體-新起點,正確的路Web
- C語言 DSF (尋求迷宮起點到終點的所有路徑)C語言
- JUnit原始碼分析(四)——從Decorator模式說起原始碼模式
- 終身程式設計之新起點程式設計
- 一起來梳理JVM知識點JVM
- 一節點啟動不起來(ocssd)CSS
- 起點——2015年終總結
- 機器學習在高德起點抓路中的應用實踐機器學習