讀_設計模式_1in4
10-12
讀_設計模式_1in4
來自專欄一個程序員的路上風景1 人贊了文章
碼字不易,轉載請註明出處http://xlindo.com
- 讀《設計模式》
- 一 設計模式初步
- 一點一 面向對象設計的原則
- 一點二 設計模式怎樣解決問題
- 一點三 設計模式在開發如下三類主要軟體中的作用
- 一點四 怎樣選擇設計模式
- 一點五 怎樣使用設計模式
- 一點六 從最簡單常用的設計模式出發:
xlindo 2017年12月18日
一 設計模式初步
一點一 面向對象設計的原則
- 針對介面編程,而不是針對實現編程
- 優先使用對象組合,而不是類繼承
一點二 設計模式怎樣解決問題
- 尋找合適的對象:面向對象設計最難的部分是將系統分解成對象集合;
- 決定對象的粒度:對象在大小和數目上變化極大;
- 指定對象介面:動態綁定、多態;
- 描述對象的實現:實例化、類繼承、抽象類、具體類、類繼承、介面繼承;
- 運動復用機制:優先使用對象組合,而不是類繼承;委託,this;參數化類型,也就是模板;
- 關聯運行時刻和編譯時刻的結構:
- 聚合aggregation:一個對象擁有另一個對象或對另一個對象負責,意味著具有相同生命周期;
- 相識acquaintance:一個對象僅僅知道另一個對象,也被稱為「關聯」或「引用」關係。
- 設計應支持變化:導致重新設計的一般原因,以及解決這些問題的設計模式:
- 通過顯示地指定一個類來創建對象:這將使你受特定實現的約束而不是特定介面的約束。應該間接地創建對象。設計模式:Abstract Factory、Factory Method、Prototype;
- 對特殊操作的依賴:為避免把代碼寫死,你將可以在編譯時刻或運行時刻很方便地改變響應請求的方法。設計模式:Chain of Responsibility,Command;
- 對硬體和軟體平台的依賴:設計系統時應限制其平台相關性。設計模式:Abstract Factory、Bridge;
- 對對象表示或實現的依賴:對客戶應隱藏對象怎樣表示、保存、定位或實現的客戶在對象發生變化時可能的變化。設計模式:Abstract Factory、Bridge、Memento、Proxy;
- 演算法依賴:有可能發生變化的演算法應該被孤立起來。Builder、Iterator、Strategy、Template Method、Visitor;
- 緊耦合:使用抽象耦合和分層技術來提高系統的鬆散耦合性。設計模式:AbStract Factory、Command、Facade、Mediator、Observer、Chain of Responsibility;
- 通過生成子類來擴充功能:新的功能不應該通過定義已存在類的子類的方式加到應用中去,比如對象組合技術和具體的委託技術。設計模式:Bridge、Chain of Responsibility、Composite、Decorator、Observer、Strategy。
- 不能方便地對類進行修改:卻沒有源代碼,可以定義一個子類,且將它的實例和已存在的對象進行組合來引入定製的功能。設計模式:Adapter、Decorator、Visitor。
一點三 設計模式在開發如下三類主要軟體中的作用:
應用程序Application Program
如果你將要建造像文檔編輯器或電子製表軟體這樣的應用程序,那麼它的內部復用性、可維護性和可擴充性是要優先考慮的。
工具箱Toolkit
強調代碼復用
,它們是面向對象環境下的「子程序庫」。
框架Framework
框架規定了你的應用的體系結構。它定義了整體結構,類和對象的分隔,各部分的主要責任,類和對象怎麼協作,以及控制流程。框架預定義了這些設計參數,以便於應用設計者或實現者能集中精力於應用本身的特定細節。框架記錄了其應用領域的共同的設計決策。
因而框架更強調設計復用
,儘管框架常包括具體的立即可用的子類。加強文檔工作對於所有軟體而言都是重要的,對於框架其重要性顯得尤為突出。
框架與設計模式的不同:
- 設計模式比框架更抽象;
- 設計模式是比框架更小的體系結構元素;
- 框架比設計模式更加特例化。
一點四 怎樣選擇設計模式
- 考慮模式是怎樣解決設計問題的;
- 瀏覽模式的意圖部分;
- 研究模式怎樣關聯;
- 研究目的相似的模式
- 檢查重新設計的原因;
- 考慮你的設計中哪些是可變的。
一點五 怎樣使用設計模式
- 大致瀏覽一遍設計模式:特別注意其適用性部分和效果部分,確定它適合你的問題;
- 回頭看研究結構部分、參與者部分和協作部分:確保你理解這個模式的類和對象以及他們是怎樣關聯的;
- 看代碼示例部分,看看這個模式代碼形式的具體例子
- 選擇模式參與者的名字,使它們在應用上下文中有意義:例如命名*Strategy這樣的類;
- 定義類:聲明介面,建立繼承關係,定義代表數據和對象引用的實例變數;
- 定義模式中專用於應用的操作名稱:名稱一般依賴於應用,例如,可以使用「Create」前綴統一標記Factory方法;
- 實現執行模式中責任和協作的操作:實現部分提供線索指導你進行實現。
一點六 從最簡單常用的設計模式出發:
- Abstract Factory
- Adapter
- Composite
- Decorator
- Factory Method
- Observer
- Strategy
- Template Method
推薦閱讀: