面向複用編程
複用性
軟件複用是使用現有軟件組件實現或更新軟件系統的過程。
複用主要用在
- 爲了複用編程
- 基於複用編程
其優勢在於 - 成本有效性和及時性
- 可生成可靠的軟件
- 標準化
同時帶來了一些弊端
- 可複用的組件時空性能往往不如定向開發的同等功能軟件
其評價標準爲
- 複用頻度
- 複用成本
對於可複用性,我們期望它:
- 簡單
- 可移植性和兼容性好
- 靈活
- 可擴展
- 通用和參數化
- 模塊化
- 將變化限制在局部
- 穩定
複用分爲:
- 白盒複用:複用代碼是可用的,但通常需要一些小改造或適應
- 黑盒複用:通過提供一些“粘合”以組合現有代碼的形式重用,但不必更改代碼本身,通常是因爲您無法訪問代碼
在層次上又分爲:
- 代碼級
- 存在問題如下問題
- 需要維護多處修改的一致性問題
- 過程具有高風險
- 需要了解工作原理
- 需要訪問源代碼
- 存在問題如下問題
- 模塊級
- 通過類與接口
- 庫級
- API和包
- 系統級
- 框架
在模塊級複用上有如下方法
- 繼承
- 在java中就是extend
- 委託
- 調用
- 聯合(老師之於學生,學生之於課堂)
- 包含(人之於心臟)
庫:一系列方法和類
對於一個優秀的API需要:
- 易於學習
- 易於使用
- 難以誤用
- 易於保證代碼的可讀性
- 足以滿足要求
- 易於升級
- 適合閱讀者
系統級複用
框架:應用框架是包含了接口、抽象類和具體類的可複用程序,使用時需要在其基礎上補充所需要的設計元素。
框架與庫的對比
類庫:
- 較少特定領域
- 提供較小的重用範圍。
- 類庫是被動的; 對控制流沒有約束。
- 被使用者調用
框架:
- 類爲一系列相關應用程序進行合作。
- 框架是活躍的; 影響控制流程。
- 調用使用者代碼