Adapter 模式的工作原理
适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。
适配器模式UML 类图如下:
适配器模式包含如下角色:
Target: 目标抽象类
Adapter:适配器类
Adaptee:适配者类
应用实例:
用 Adapter 模式模拟一个厨师不断提升自己的过程
要求:一个人最初是一个面点师,后来他学习了川菜,又成了川菜师。以适配器模式为进行系统设计。
1.MiandianShi类
class MiandianShi
{
public void CookMiandian()
{
Console.WriteLine("能烹饪面点");
}
}
2.ChuancaiShi类
class ChuancaiShi
{
public void CookChuancai()
{
Console.WriteLine("能烹饪川菜");
}
}
3.CookAdapter类
class CookAdapter:Cookoperation
{
private MiandianShi m;
private ChuancaiShi c;
public CookAdapter()
{
m = new MiandianShi();
c = new ChuancaiShi();
}
public void Miandian()
{
m.CookMiandian();
}
public void Chuancai()
{
c.CookChuancai();
}
}
4.Cookoperation类
interface Cookoperation
{
void Miandian();
void Chuancai();
}
5. 辅助文件App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="adapter" value="AdapterSample.CookAdapter"/>
</appSettings>
</configuration>
6.客户端测试类Client
class Client
{
static void Main(string[] args)
{
//针对抽象目标接口编程
Cookoperation cook;
//读取配置文件
string adapterType = ConfigurationManager.AppSettings["adapter"];
//反射生成对象
cook = (Cookoperation)Assembly.Load("AdapterSample").CreateInstance(adapterType);
cook.Miandian();
cook.Chuancai();
Console.Read();
}
}
运行结果: