适配器模式:系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
Client:美国的电脑
Target:中国的插座
Adapter:适配器(电源适配器,使美国的电脑可以插在中国的插座上,把源接口转换为目标接口)
Adaptee:适配器对象
姚明到美国打球需要翻译:
Player.cs
//球员抽象类
abstract class Player
{
protected string Name;
public Player(string name)
{
this.Name = name;
}
public abstract void Attack();
public abstract void Define();
}
//前锋
class Forward:Player
{
public Forward(string name)
: base(name)
{ }
public override void Define()
{
Console.WriteLine("Forward Define go go go");
}
public override void Attack()
{
Console.WriteLine("Forward Attack go go go");
}
}
外籍中锋
//外籍中锋
class ForeignCenter
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public void 防守()
{
Console.WriteLine("中锋快去防守");
}
public void 进攻()
{
Console.WriteLine("中锋快去进攻");
}
}
Translator.cs
翻译
//翻译(当成球员角色)
class Translator:Player
{
ForeignCenter fc = new ForeignCenter();
public Translator(string name)
: base(name)
{
fc.Name = name;
}
public override void Define()
{
fc.防守();
}
public override void Attack()
{
fc.进攻();
}
}
主程序调用
class Program
{
static void Main(string[] args)
{
Player b = new Forward("巴蒂尔");
b.Attack();
Player m = new Translator("姚明");
m.Define();
Console.Read();
}
}
运用:DataAdapter用作DataSet和数据源之间的适配器以便检索和保存数据。DataApter通过映射Fill和Update来提供这一适配