Laissez l'abstraction et l'implémentation changer indépendamment
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"); } }
Appel :
Game g = new KofGame("kof97"); g.m_play = new IPadPlay(); g.PlayForFun();
Ce qui précède est l'explication détaillée du code du mode pont du modèle de conception C# . Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !