using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 适配器 { //电源基类 public class BasePower { //电压值 private float power; //单位 private string unit = "V"; //构造方法 public BasePower(float power) { this.power = power; } public float Power { get { return power; } set { power = value; } } public string Unit { get { return unit; } set { unit = value; } } } //交流电源接口 public interface IPower { //输出交流电 void output(); } //交流电源 public class Power : BasePower,IPower { //构造方法 public Power(float power) : base(power) { } //电源输出 public void output() { Console.WriteLine("这是" + this.Power + this.Unit + "交流电源!"); } } //12V直流电源接口 public interface IPower12 { void output12v(); } //12V直流电源 public class Power12 : BasePower,IPower12 { public Power12(float power) : base(power) { } public void output12v() { Console.WriteLine("这是" + this.Power + this.Unit + "直流电源!"); } } //电源适配器(实现目标对象接口,即12V电源接口) public class AdapterPower12 :IPower12 { //待转换的交流电源 private BasePower basePower; //适配器构造方法,将待转换对象传入 public AdapterPower12 (BasePower basePower) { this.basePower = basePower; } //实现目标对象方法 public void output12v() { //获得外部电源值 float powerFloat = this.basePower.Power; //进行电源转换 if (powerFloat == 380) { //380V电源转换 powerFloat = powerFloat / 31.67f; } else if (powerFloat == 220) { //220V电源转换 powerFloat = powerFloat / 18.33f; } else if(powerFloat==110) { //110V电源转换 powerFloat = powerFloat / 9.17f; } else { Console.WriteLine("不能适配电源!"); return; } powerFloat = (int)(powerFloat * 10) / 10.0f; Console.WriteLine("这是" + powerFloat + this.basePower.Unit + "直流电源!"); } } class Program { static void Main(string[] args) { //首先生成一个220V电源对象! Power power220 = new Power(220); power220.output(); //生成一个12V电源对象 IPower12 power12 = new Power12(12); power12.output12v(); Console.WriteLine(); //使用电源适配器将220V电源转换成12V电源 Console.WriteLine("电源适配器转换中"); IPower12 adapterPower12 = new AdapterPower12(power220); adapterPower12.output12v(); Console.WriteLine("电源适配器转换结束!"); } } }
适配器的类图
3.想创建一个可以复用的类,该类可以与其他不想管的类或不可预见的类协同工作的时候
适配器主要用于系统的升级扩展,或者版本兼容性上,没有哪一个系统分析师会在软件设计阶段使用适配器模式的。适配器可以很好的解决版本兼容问题。另外,就是原有类和新的接口标准不能差别太大,否则,适配器是达不到预期效果的。适配器在软件的后期维护中具有很大的优势,它不仅能保持原有系统的稳定,而且还能进行新功能的扩展。
2.与装饰的区别:适配器主要用来填补两个接口之间的差异,而装饰则是不需要更改接口,就可以新增功能的设计模式。
原文地址:http://blog.csdn.net/ry513705618/article/details/37994697