让抽象和实现 独立的变化
public abstract class game
{
public game(string name)
{
this.name = name;
}
public play m_play { get; set; }
public string name { get; set; }
public virtual void playforfun()
{
this.m_play.playit(this.name);
}
}
public class war3game : game
{
public war3game(string name) : base(name) {
}
public override void playforfun()
{
base.playforfun();
}
}
public class kofgame : game
{
public kofgame(string name)
: base(name)
{
}
public override void playforfun()
{
base.playforfun();
}
}
public class csgame : game
{
public csgame(string name)
: base(name)
{
}
public override void playforfun()
{
base.playforfun();
}
}
public abstract class play
{
public virtual void playit(string gamename) { }
}
public class cpuplay : play
{
public override void playit(string gamename)
{
console.writeline("play" + gamename + " game on computer");
}
}
public class ipadplay : play
{
public override void playit(string gamename)
{
console.writeline("play" + gamename + " game on ipad");
}
}
public class iphoneplay : play
{
public override void playit(string gamename)
{
console.writeline("play " + gamename + " game on iphone");
}
}
调用:
game g = new kofgame("kof97");
g.m_play = new ipadplay();
g.playforfun();
以上就是c# 设计模式之桥接模式的代码详解的内容。