讀_設計模式_1in4

讀_設計模式_1in4

來自專欄一個程序員的路上風景1 人贊了文章

碼字不易,轉載請註明出處http://xlindo.com

  • 讀《設計模式》
    • 一 設計模式初步
      • 一點一 面向對象設計的原則
      • 一點二 設計模式怎樣解決問題
      • 一點三 設計模式在開發如下三類主要軟體中的作用
      • 一點四 怎樣選擇設計模式
      • 一點五 怎樣使用設計模式
      • 一點六 從最簡單常用的設計模式出發:

xlindo 2017年12月18日

一 設計模式初步

一點一 面向對象設計的原則

  1. 針對介面編程,而不是針對實現編程
  2. 優先使用對象組合,而不是類繼承

一點二 設計模式怎樣解決問題

  1. 尋找合適的對象:面向對象設計最難的部分是將系統分解成對象集合;
  2. 決定對象的粒度:對象在大小和數目上變化極大;
  3. 指定對象介面:動態綁定、多態;
  4. 描述對象的實現:實例化、類繼承、抽象類、具體類、類繼承、介面繼承;
  5. 運動復用機制:優先使用對象組合,而不是類繼承;委託,this;參數化類型,也就是模板;
  6. 關聯運行時刻和編譯時刻的結構:
    1. 聚合aggregation:一個對象擁有另一個對象或對另一個對象負責,意味著具有相同生命周期;
    2. 相識acquaintance:一個對象僅僅知道另一個對象,也被稱為「關聯」或「引用」關係。
  1. 設計應支持變化:導致重新設計的一般原因,以及解決這些問題的設計模式:
    1. 通過顯示地指定一個類來創建對象:這將使你受特定實現的約束而不是特定介面的約束。應該間接地創建對象。設計模式:Abstract Factory、Factory Method、Prototype;
    2. 對特殊操作的依賴:為避免把代碼寫死,你將可以在編譯時刻或運行時刻很方便地改變響應請求的方法。設計模式:Chain of Responsibility,Command;
    3. 對硬體和軟體平台的依賴:設計系統時應限制其平台相關性。設計模式:Abstract Factory、Bridge;
    4. 對對象表示或實現的依賴:對客戶應隱藏對象怎樣表示、保存、定位或實現的客戶在對象發生變化時可能的變化。設計模式:Abstract Factory、Bridge、Memento、Proxy;
    5. 演算法依賴:有可能發生變化的演算法應該被孤立起來。Builder、Iterator、Strategy、Template Method、Visitor;
    6. 緊耦合:使用抽象耦合和分層技術來提高系統的鬆散耦合性。設計模式:AbStract Factory、Command、Facade、Mediator、Observer、Chain of Responsibility;
    7. 通過生成子類來擴充功能:新的功能不應該通過定義已存在類的子類的方式加到應用中去,比如對象組合技術和具體的委託技術。設計模式:Bridge、Chain of Responsibility、Composite、Decorator、Observer、Strategy。
    8. 不能方便地對類進行修改:卻沒有源代碼,可以定義一個子類,且將它的實例和已存在的對象進行組合來引入定製的功能。設計模式:Adapter、Decorator、Visitor。

一點三 設計模式在開發如下三類主要軟體中的作用:

應用程序Application Program

如果你將要建造像文檔編輯器或電子製表軟體這樣的應用程序,那麼它的內部復用性、可維護性和可擴充性是要優先考慮的。

工具箱Toolkit

強調代碼復用,它們是面向對象環境下的「子程序庫」。

框架Framework

框架規定了你的應用的體系結構。它定義了整體結構,類和對象的分隔,各部分的主要責任,類和對象怎麼協作,以及控制流程。框架預定義了這些設計參數,以便於應用設計者或實現者能集中精力於應用本身的特定細節。框架記錄了其應用領域的共同的設計決策。

因而框架更強調設計復用,儘管框架常包括具體的立即可用的子類。加強文檔工作對於所有軟體而言都是重要的,對於框架其重要性顯得尤為突出。

框架與設計模式的不同:

  1. 設計模式比框架更抽象;
  2. 設計模式是比框架更小的體系結構元素;
  3. 框架比設計模式更加特例化。

一點四 怎樣選擇設計模式

  1. 考慮模式是怎樣解決設計問題的;
  2. 瀏覽模式的意圖部分;
  3. 研究模式怎樣關聯;
  4. 研究目的相似的模式
  5. 檢查重新設計的原因;
  6. 考慮你的設計中哪些是可變的。

一點五 怎樣使用設計模式

  1. 大致瀏覽一遍設計模式:特別注意其適用性部分和效果部分,確定它適合你的問題;
  2. 回頭看研究結構部分、參與者部分和協作部分:確保你理解這個模式的類和對象以及他們是怎樣關聯的;
  3. 看代碼示例部分,看看這個模式代碼形式的具體例子
  4. 選擇模式參與者的名字,使它們在應用上下文中有意義:例如命名*Strategy這樣的類;
  5. 定義類:聲明介面,建立繼承關係,定義代表數據和對象引用的實例變數;
  6. 定義模式中專用於應用的操作名稱:名稱一般依賴於應用,例如,可以使用「Create」前綴統一標記Factory方法;
  7. 實現執行模式中責任和協作的操作:實現部分提供線索指導你進行實現。

一點六 從最簡單常用的設計模式出發:

  • Abstract Factory
  • Adapter
  • Composite
  • Decorator
  • Factory Method
  • Observer
  • Strategy
  • Template Method

推薦閱讀:

TAG:設計模式 | 編程語言 | 軟體工程 |