代理模式实现玩家找代练肝游戏的情景:
// 玩家与代练都会打游戏(公共接口):
// -----------------------------
interface IPlayGame
{
void KillEnemy();
void KillBoss();
void MissionFinished();
}
// 打的游戏(代理直接接触对象):
// -------------------------
class Game
{
public Game(string name){ Name = name; }
public string Name { get; set; }
}
// 玩家(被代理对象):
// -----------------
class Player : IPlayGame
{
Game game;
public Player(Game game)
{
this.game = game;
}
//玩家自己打游戏
public void KillEnemy(){ Console.WriteLine($"{game.Name} 击杀小兵!"); }
public void KillBoss(){ Console.WriteLine($"{game.Name} 击杀Boss!"); }
public void MissionFinished(){ Console.WriteLine($"{game.Name} 完成任务!"); }
}
// 代练(代理对象):
// ---------------
class PlayerProxy : IPlayGame
{
//代练替代玩家
Player player;
public PlayerProxy(Game game)
{
player = new Player(game);
}
//代练打游戏
public void KillEnemy() { player.KillEnemy(); }
public void KillBoss() { player.KillBoss(); }
public void MissionFinished(){ player.MissionFinished(); }
}
class Client
{
static void Main(string[] args)
{
//创建打的游戏
Game LOL = new Game("英雄联盟代练:");
//创建代练、设定代练游戏
PlayerProxy playerProxy = new PlayerProxy(LOL);
//代练代打
playerProxy.KillEnemy();
playerProxy.KillBoss();
playerProxy.MissionFinished();
/* OUT:
英雄联盟代练: 击杀小兵!
英雄联盟代练: 击杀Boss!
英雄联盟代练: 完成任务!
*/
}
}
原文:https://www.cnblogs.com/SouthBegonia/p/12005806.html