POSA2:Wrapper Facade模式

意圖

用更加簡潔、健壯、可移植、可維護和內聚的面向對象接口,封裝已存在的非面向對象API的函數和相關數據。

背景

使用已存在的非面向對象的API提供的服務或機制,開發可維護和進化的應用。

問題

  • 簡潔的代碼比複雜的代碼更加健壯,因爲它易於理解和維護
  • 可移植的軟件可以容易的在不同的操作系統、編譯器和硬件平臺之間移植
  • 提高軟件可維護性,會降低開發生命週期的開銷
  • 高內聚的組件,易於學習、維護和增強

解決方案

結構:

行爲:


實現:

  1. 識別已有的過程式API中內聚的抽象和關係
  2. 把內聚的函數放入包裝外觀類中(Wrapper Facade Class)
    1. 創建內聚類
    2. 把多個獨立的函數放入其中
    3. 自動創建和銷燬,可以考慮使用構造函數和析構函數
    4. 選擇間接的等級
    5. 檢查依賴與特定平臺變化的代碼
  3. 考慮以可控地訪問實現細節(Escape-Hatch)
  4. 開發一套錯誤處理機制
  5. 定義相關的幫助類(可選)

已知應用

  1. MFC
  2. ACE

效果

優勢:
  • 內聚的高層面向對象接口
  • 易於移植和維護
  • 模塊化、可重用、可配置
不足:
  • 功能縮水(Escape-Hatch可以解決)
  • 性能降低(類函數內聯可以解決)
  • 編程語言和編譯器的限制

 

2012/04/11 00:05 於上海

 

發佈了88 篇原創文章 · 獲贊 31 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章