您的位置:首页 > 其它

设计模式- 适配器模式

2012-08-28 13:04 162 查看
适配器模式分为两种,一种是对象的适配器模式,另一种是类的适配器模式。我们知道C#是单继承的,C++是多继承的。类的适配器适合用于多继承的,所以这篇文章就只讲对象的适配器。

我们先来理解一下什么是适配器模式?

1、在我们的生活中其实经常需要用到适配器模式的地方,例如我们的手机充电器,我们知道我国的电源电压是220V的,但是手机电池能接受的电压是3-7V,为了使得手机电池能接受220V的电源电压,需要一个变压器,把220V电压转成3-7V的电压,那么这个变压器我们就可以理解成是一个适配器。(将不适合的电压变成适合手机电池的电压)

View Code

using System;
using System.Collections.Generic;
using System.Text;

namespace 适配器模式
{
class Program
{
static void Main(string[] args)
{
Player b = new Forwards("巴蒂尔");
b.Attack();

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

//Player ym = new Center("姚明");
Player ym = new Translator("姚明");
ym.Attack();
ym.Defense();

Console.Read();
}
}

//篮球运动员
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 Center : Player
{
public Center(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
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}

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

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

//翻译者
class Translator : Player
{
private ForeignCenter wjzf = new ForeignCenter();

public Translator(string name)
: base(name)
{
wjzf.Name = name;
}

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

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


  最后PS下:这篇文章参看了微软的设计模式教程和《大话设计模式》。只有少部份文字是自己对适配器的理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: