將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 被修正時 我們只需要做及少的修正
沒有留言:
張貼留言