設計模式結構型之介面卡模式
阿新 • • 發佈:2020-08-23
什麼是介面卡?
介面卡是一個介面轉換器,它可以是一個獨立的硬體介面裝置,允許硬體或電子介面與其它硬體或電子介面相連,也可以是資訊介面。比如:電源介面卡、三角架基座轉接部件、USB與串列埠的轉接裝置等。
在軟體程式中,介面卡模式就是要讓一個介面變成我們想要的介面,使得原本不相容的型別可以一起使用。舉例說明:
interface IDbHelper { void Insert(); void Delete(); void Update(); void Query(); }
假設我們定義了一個通用的的介面IDbHelper,SqlServerHelper類實現了該介面定義的Insert,Delete,Update,Query方法。我們規定這就是一個標準化的介面。增刪改查必須通過該介面去實現。
那麼問題來了 ,我們現在要接入使用一個第三方的類,來實現該介面程式碼如下。
class RedisHelper { public void DeleteData() { throw new NotImplementedException(); } public void InsertData() { throw new NotImplementedException(); } public void QueryData() {throw new NotImplementedException(); } public void UpdateData() { throw new NotImplementedException(); } }
可以看出,RedisHelper類中的方法跟原來的定義的標準方法都不一樣,這時我們就可以通過介面卡模式(兩種寫法,程式碼如下)來新增一個類來適應用我們原來的介面。
/// <summary> /// 類介面卡 /// </summary> public classClassAdapterRedisHelper : RedisHelper, IDbHelper { public void Delete() { base.DeleteData(); } public void Insert() { base.InsertData(); } public void Query() { base.QueryData(); } public void Update() { base.UpdateData(); } } /// <summary> /// 物件介面卡 /// </summary> public class ObjectAdapterRedisHelper : IDbHelper { private readonly RedisHelper rh = null; public ObjectAdapterRedisHelper() { rh = new RedisHelper(); } public void Delete() { rh.DeleteData(); } public void Insert() { rh.InsertData(); } public void Query() { rh.QueryData(); } public void Update() { rh.UpdateData(); } }