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