您的位置:首页 > 编程语言 > C#

适配器模式

2013-12-22 12:52 155 查看
模式名称:适配器模式

生活场景:把电话网通过网口传送数据给笔记本,把电视网数据通过网口传送数据给笔记本电脑。

终极目标:实现多网合一。

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);  

         

        }

    }

设计体会:适配器很适合于解决兼容性的问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息