意圖
用更加簡潔、健壯、可移植、可維護和內聚的面向對象接口,封裝已存在的非面向對象API的函數和相關數據。
背景
使用已存在的非面向對象的API提供的服務或機制,開發可維護和進化的應用。
問題
- 簡潔的代碼比複雜的代碼更加健壯,因爲它易於理解和維護
- 可移植的軟件可以容易的在不同的操作系統、編譯器和硬件平臺之間移植
- 提高軟件可維護性,會降低開發生命週期的開銷
- 高內聚的組件,易於學習、維護和增強
解決方案
結構:
行爲:
實現:
- 識別已有的過程式API中內聚的抽象和關係
-
把內聚的函數放入包裝外觀類中(Wrapper Facade Class)
- 創建內聚類
- 把多個獨立的函數放入其中
- 自動創建和銷燬,可以考慮使用構造函數和析構函數
- 選擇間接的等級
- 檢查依賴與特定平臺變化的代碼
- 考慮以可控地訪問實現細節(Escape-Hatch)
- 開發一套錯誤處理機制
- 定義相關的幫助類(可選)
已知應用
- MFC
- ACE
效果
- 內聚的高層面向對象接口
- 易於移植和維護
- 模塊化、可重用、可配置
- 功能縮水(Escape-Hatch可以解決)
- 性能降低(類函數內聯可以解決)
- 編程語言和編譯器的限制
2012/04/11 00:05 於上海