適配器模式

模式名稱:適配器模式

生活場景:把電話網通過網口傳送數據給筆記本,把電視網數據通過網口傳送數據給筆記本電腦。

終極目標:實現多網合一

1.不假思索的思路:獲取電話網和電視網的數據信息後再傳到筆記本中

2.類結構圖:

代碼瀏覽:

namespace Adapter

{

    #region 網口

    /// <summary>

    /// 網口接口

    /// </summary>

    interface IInternetAccess

    {

        Byte[] SendInternetAccessData(); //傳送網口數據 

    }

    /// <summary>

    /// 網口類

    /// </summary>

    class InternetAccess : IInternetAccess

    {

        private byte[] internetAccessData;

        public Byte[] SendInternetAccessData()

        {

            return internetAccessData;

        }

    } 

    #endregion

    #region 電話

    /// <summary>

    /// 電話接口

    /// </summary>

    interface IPOTS

    {

        Byte[] SendPOTSData(); //傳送電話數據

    }

    /// <summary>

    /// 電話類

    /// </summary>

    class POTS : IPOTS

    {

        private byte[] POTSData;

        public byte[] SendPOTSData()

        {

            return POTSData;

        }

    } 

    #endregion

    #region 電視

    /// <summary>

    /// 電視接口

    /// </summary>

    interface ITelevisionInterface

    {

        Byte[] SendTelevisionData(); //傳送電視接口上的數據

    }

    /// <summary>

    /// 電視類

    /// </summary>

    class TelevisionInterface : ITelevisionInterface

    {

        private byte[] televisionData;

        public byte[] SendTelevisionData()

        {

            return televisionData;

        }

    } 

    #endregion

    #region 筆記本電腦類

    /// <summary>

    /// 筆記本電腦類

    /// </summary>

    class Computer

    {

        public byte[] GetOutterFile(IInternetAccess internetAccess)  //讀取外部網絡數據

        {

            return internetAccess.SendInternetAccessData(); //讀取網口中的數據

        }

    } 

    #endregion

    class Program

    {

        static void Main(string[] args)

        {

            Computer com = new Computer(); //筆記本電腦

            InternetAccess internetAccess = new InternetAccess(); //正常網口

            Byte[] data = com.GetOutterFile(internetAccess); 

            POTS post = new POTS();  //電話接口

            Byte[] data1 = com.GetOutterFile(post); //報錯

            TelevisionInterface televisionInterface = new TelevisionInterface();//電視接口

            Byte[] data2 = com.GetOutterFile(televisionInterface);//報錯

        }

    }

}

存在問題:數據不兼容

2.歸納階段

歸納步驟一

當前目標:實現數據兼容

思路:生產一箇中間件,能將電話接口和網口,電視接口和網口相適應。

類結構圖:

代碼瀏覽:

 #region 適配器

    /// <summary>

    /// 電話接口網口中間件,適配器 

    /// </summary>

    class PAdapter : IInternetAccess

    {

        public PAdapter(POTS post)

        {

            ipost = post;

        }

        public byte[] SendInternetAccessData()

        {

            return ipost.SendPOTSData();

        }

        private IPOTS ipost;

    }

    /// <summary>

    /// 電視接口網口中間件,適配器 

    /// </summary>

    class TAdapter : IInternetAccess

    {

        public TAdapter(TelevisionInterface televisionInterface)

        {

            iTelevisionInterface = televisionInterface;

        }

        public byte[] SendInternetAccessData()

        {

            return iTelevisionInterface.SendTelevisionData();

        }

        private ITelevisionInterface iTelevisionInterface;

    } 

    #endregion

    class Program

    {

        static void Main(string[] args)

        {

            Computer com = new Computer(); //筆記本電腦

            InternetAccess internetAccess = new InternetAccess(); //正常網口

            Byte[] data = com.GetOutterFile(internetAccess); 

            POTS post = new POTS();  //電話接口

            PAdapter pAdapter = new PAdapter(post); //中間件,適配器

            Byte[] data1=com.GetOutterFile(pAdapter); 

         

            TelevisionInterface televisionInterface = new TelevisionInterface();//電視接口

            TAdapter tAdapter = new TAdapter(televisionInterface); //中間件,適配器

            Byte[] data2 = com.GetOutterFile(tAdapter);  

         

        }

    }

設計體會:適配器很適合於解決兼容性的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章