1. 程式人生 > 實用技巧 >設計模式結構型之介面卡模式

設計模式結構型之介面卡模式

什麼是介面卡?

介面卡是一個介面轉換器,它可以是一個獨立的硬體介面裝置,允許硬體或電子介面與其它硬體或電子介面相連,也可以是資訊介面。比如:電源介面卡、三角架基座轉接部件、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 class
ClassAdapterRedisHelper : 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(); } }