设计模式--适配器模式

将一个类的接口转换成客户希望的另外一个接口。

系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器。

//定义一个player抽象类

abstract class Player
{
protected string name;
public Player(string name)
{
this.name = name;
}

public abstract void Attack();

public abstract void Defense();
}

//前锋

class Forwards : Player
{
public Forwards(string name) : base(name)
{
}

public override void Attack()
{
Console.WriteLine("前锋{0}进攻", name);
}

public override void Defense()
{
Console.WriteLine("前锋{0}防守", name);
}
}

//后卫

class Guards : Player
{
public Guards(string name) : base(name)
{
}

public override void Attack()
{
Console.WriteLine("后卫{0}进攻", name);
}

public override void Defense()
{
Console.WriteLine("后卫{0}防守", name);
}
}

//外籍中锋

class ForeignCenter
{
public string Name { get; set; }

public void 进攻()
{
Console.WriteLine("外籍中锋{0}进攻",Name);
}

public void 防守()
{
Console.WriteLine("外籍中锋{0}防守", Name);
}

}

//外籍中锋翻译类(即适配器类)

class Translator : Player
{
ForeignCenter wjzf = new ForeignCenter();
public Translator(string name) : base(name)
{
wjzf.Name = name;
}

public override void Attack()
{
wjzf.进攻();
}

public override void Defense()
{
wjzf.防守();
}
}

调用:

Player f = new Forwards("巴蒂尔");
f.Attack();

Player g = new Guards("麦克格雷迪");
g.Attack();

Player p = new Translator("姚明");
p.Attack();//即外籍中锋自己的进攻方法
p.Defense();

原文地址:https://www.cnblogs.com/buzhidaojiaoshenme/p/6727927.html