C# 设计模式巩固笔记

前言

多读书、多学习

介绍-适配器模式

定义:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

实现

这里有大家生活中常见的例子,作为一名程序员。看到适配器我首先想到的就是我们常用的笔记本的电源适配器。大家都知道笔记本是无法直接接入220V的电压的,一般笔记本支持的就是16 - 22V的电压,这个就是电源适配器的输出的电压。

下面就通过适配器模式来实现这个过程。

1.定义一个220V电压的接口,由我们的插座来实现:

  /// <summary>
    /// 220V电源插口
    /// </summary>
    public interface ISoketPowerWith200V
    {
        /// <summary>
        /// 输出电压
        /// </summary>
        /// <returns></returns>
        int OutPutVoltage();
    }
    /// <summary>
    /// 电源
    /// </summary>
    public class Socket : ISoketPowerWith200V
    {
        /// <summary>
        /// 输出电压
        /// </summary>
        /// <returns></returns>
        public int OutPutVoltage()
        {
            return 220;
        }
    }

2.需要一个输出电压的接口:

    /// <summary>
    /// 20V电压插口
    /// </summary>
    public interface ISoketPowerWith20V
    {
        /// <summary>
        /// 输出电压
        /// </summary>
        /// <returns></returns>
        int OutPutVoltage();
    }

3.看下笔记本类,笔记本提供了20V电压的插口:

   /// <summary>
    /// 笔记本电脑
    /// </summary>
    public class LapTop
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        public LapTop()
        {

        }
        /// <summary>
        /// 接入电源适配器
        /// </summary>
        /// <param name="powerAdapter">电源适配器</param>
        public void SetPowerAdapter(ISoketPowerWith20V powerAdapter)
        {
            PowerAdapter = powerAdapter;
            Request20V();
        }
        /// <summary>
        /// 电源适配器 - 输出电压 20V
        /// </summary>
        public ISoketPowerWith20V PowerAdapter { get; set; }
        /// <summary>
        /// 需要20V电压
        /// </summary>
        public void Request20V()
        {
            int voltage = PowerAdapter.OutPutVoltage();
            Console.WriteLine("开始检测输入电压是否正确...");
            if (voltage == 20)
                Console.WriteLine("输入电压正确!");
            else
                Console.WriteLine("输入电压错误!");
        }
    }

 4.这个20V的电源如何实现呢,下面就是我们的适配器出场了:

    /// <summary>
    /// 电源适配器类
    /// </summary>
    public class PowerAdapter : ISoketPowerWith20V
    {
        /// <summary>
        /// 220V插座
        /// </summary>
        ISoketPowerWith200V _socket;
        public PowerAdapter()
        {
        }
        /// <summary>
        /// 接入电源
        /// </summary>
        /// <param name="socket">插座</param>
        public void SetSocket(ISoketPowerWith200V socket)
        {
            this._socket = socket;
        }
        /// <summary>
        /// 输入电压
        /// </summary>
        /// <returns></returns>
        public int OutPutVoltage()
        {
            int voltage = _socket.OutPutVoltage();
            return Switch(voltage);
        }
        /// <summary>
        /// 转换电压
        /// </summary>
        /// <param name="voltage">输入电压</param>
        /// <returns>输出电压</returns>
        private int Switch(int voltage)
        {
            Console.WriteLine("接入{0}V电压,开始转换...",voltage);
            Console.WriteLine("转换电压完成!");
            return 20;
        }
    }

 电源适配器接入220V电压,然后通过转换输出20V的电压。

5.最后看调用:

  class Program
    {
        static void Main(string[] args)
        {

            //1.拿出笔记本
            LapTop lapTop = new LapTop();
            //2.拿出适配器
            PowerAdapter adapter = new PowerAdapter();
            //3.找到一个插头
            Socket socket = new Socket();
            //4.适配器接入电源
            adapter.SetSocket(socket);
            //5.接入适配器
            lapTop.SetPowerAdapter(adapter);

            Console.Read();
        }
    }

 结果:

欢迎批评指正,转载请注明出处 http://www.cnblogs.com/xinwang/p/6425189.html

原文地址:https://www.cnblogs.com/xinwang/p/6425189.html