將API與我們內部的程式分隔開來 減低耦合
裡面有提到可以使用 Adapter (轉接器)
Adapter是系統 與 API 之間的橋梁
使得API有所更動時 不會影響到系統 只需要在 Adapter上做修改即可
以下兩個範例 廠商在開發初期出版了 FactoryAPI_0
以及過了一陣子出版了新版 FactoryAPI_1
在兩版之間 裡面有一個method做了修正
如果沒有使用Adapter 會使得主程式必須做修正 修正後也可能會衍生出bug
但是使用Adapter的話 由於修改都在一個class內 相對來說比較不會衍生出新問題
廠商舊版FactoryAPI_0
public class FactoryAPI_0 { public void Make() { System.Diagnostics.Debug.Write("Make"); } } public class FactoryAdapter { private FactoryAPI_0 ApI; public FactoryAdapter(FactoryAPI_0 API) { this.ApI = API; } public void Process() { ApI.Make(); } } class Program { static void Main(string[] args) { FactoryAPI_0 api = new FactoryAPI_0(); FactoryAdapter adapter = new FactoryAdapter(api); adapter.Process(); Console.Read(); } }
廠商新版 FactoryAPI_1
public class FactoryAPI_1 { public void Execute() { System.Diagnostics.Debug.Write("Make"); } } public class FactoryAdapter { private FactoryAPI_1 ApI; public FactoryAdapter(FactoryAPI_1 API) { this.ApI = API; } public void Process() { ApI.Execute(); } } class Program { static void Main(string[] args) { FactoryAPI_0 api = new FactoryAPI_0(); FactoryAdapter adapter = new FactoryAdapter(api); adapter.Process(); Console.Read(); } }由上面兩個範例可以發現 主程式並沒有被更動到
所有的更動都在 class 內部
造成的影響也都在class內 主程式成功的與API 分開
簡潔的程式邊界
當改變來臨時
好的設計能適應變化
不好的設計必須重新改寫或投入大量時間做修正
API 可以用封裝的方式 或者使用adapter
使API 被修正時 我們只需要做及少的修正
沒有留言:
張貼留言