C# 设计模式之桥接模式

来源:互联网 发布:高中生专业选择知乎 编辑:程序博客网 时间:2024/04/30 00:20

让抽象和实现  独立的变化


 

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();