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