设计模式---中介者模式(打出来是“终结者.......”)

本文介绍了一个模拟 FBI 情报传递系统的软件设计案例,通过抽象类和继承实现不同地区间的情报发送与接收功能。系统包含位于俄罗斯和英格兰的两名特工,以及中央情报指挥中心。

设计模式---中介者模式(打出来是“终结者.......”)

 

 

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace ConsoleApplication1
  5. {
  6.     abstract class FBIAgent
  7.     {
  8.         public abstract void SendMessage(string m);
  9.         public void ReadMessage(string m)
  10.         {
  11.             Console.WriteLine(m);
  12.         }
  13.     }
  14.     class AgentInRussia : FBIAgent
  15.     {
  16.         private FBICenter center;
  17.         public AgentInRussia(FBICenter f)
  18.         {
  19.             center = f;
  20.         }
  21.         public override void SendMessage(string m)
  22.         {
  23.             center.Send(this,m);
  24.         }
  25.     }
  26.     class AgentInEngland : FBIAgent
  27.     {
  28.         private FBICenter center;
  29.         public override void SendMessage(string m)
  30.         {
  31.             center.Send(this, m);
  32.         }
  33.         public AgentInEngland(FBICenter f)
  34.         {
  35.             center = f;
  36.         }
  37.     }
  38.     abstract class FBICenter
  39.     {
  40.         public abstract void Send(FBIAgent f,string m);
  41.         
  42.     }
  43.     class RealFBICenter : FBICenter
  44.     {
  45.         private FBIAgent agentinrussia;
  46.         private FBIAgent agentinengland;
  47.         public FBIAgent russia
  48.         {
  49.             set
  50.             {
  51.                 agentinrussia = value;
  52.             }
  53.         }
  54.         public FBIAgent england
  55.         {
  56.             set
  57.             {
  58.                 agentinengland = value;
  59.             }
  60.         }
  61.         public override void Send(FBIAgent f, string m)
  62.         {
  63.             if (f==agentinengland)
  64.             {
  65.                 agentinrussia.ReadMessage(m);
  66.             } 
  67.             else
  68.             {
  69.                 agentinengland.ReadMessage(m);
  70.             }
  71.         }
  72.     }
  73.     class Client
  74.     {
  75.         public static void Main()
  76.         {
  77.             RealFBICenter fc = new RealFBICenter();
  78.             AgentInEngland eng = new AgentInEngland(fc);
  79.             AgentInRussia rus = new AgentInRussia(fc);
  80.             fc.england = eng;
  81.             fc.russia = rus;
  82.             eng.SendMessage("我在英国搞情报,hia~hia~");
  83.             rus.SendMessage("我在俄罗斯搞情报,xia~ixa~");
  84.             Console.Read();
  85.         }
  86.     }
  87. }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值