zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    hdoj2187:悼念512汶川大地震遇难同胞 (贪心)
    2.0其它之Transform详解,以及UIElement和FrameworkElement的常用属性
    2.0外观之样式, 模板, 视觉状态和视觉状态管理器
    2.0图形之Ellipse, Line, Path, Polygon, Polyline, Rectangle
    2.0控件之ListBox, MediaElement, MultiScaleImage, PasswordBox, ProgressBar, RadioButton
    2.0画笔之SolidColorBrush, ImageBrush, VideoBrush, LinearGradientBrush, RadialGradientBrush
    2.0图形之基类System.Windows.Shapes.Shape
    2.0交互之鼠标事件和键盘事件
    2.0控件之ScrollViewer, Slider, StackPanel, TabControl, TextBlock, TextBox, ToggleButton
    2.0交互之InkPresenter(涂鸦板)
  • 原文地址:https://www.cnblogs.com/xinwang/p/6425189.html
Copyright © 2011-2022 走看看