zoukankan      html  css  js  c++  java
  • 设计模式学习笔记--中介者模式

     1 using System;
     2 
     3 namespace Mediator
     4 {
     5     /// <summary> 
     6     /// 作者:bzyzhang
     7     /// 时间:2016/6/1 22:01:20 
     8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
     9     /// Colleague说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
    10     /// </summary> 
    11     public abstract class Colleague
    12     {
    13         protected Mediator mediator;
    14 
    15         public Colleague(Mediator mediator)
    16         {
    17             this.mediator = mediator;
    18         }
    19     }
    20 }
    View Code
     1 using System;
     2 
     3 namespace Mediator
     4 {
     5     /// <summary> 
     6     /// 作者:bzyzhang
     7     /// 时间:2016/6/1 22:03:37 
     8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
     9     /// ConcreteColleague1说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
    10     /// </summary> 
    11     public class ConcreteColleague1:Colleague
    12     {
    13         public ConcreteColleague1(Mediator mediator)
    14             : base(mediator)
    15         { }
    16 
    17         public void Send(string message)
    18         {
    19             mediator.Send(message,this);
    20         }
    21 
    22         public void Notify(string message)
    23         {
    24             Console.WriteLine("同事1得到消息:"+message);
    25         }
    26     }
    27 }
    View Code
     1 using System;
     2 
     3 namespace Mediator
     4 {
     5     /// <summary> 
     6     /// 作者:bzyzhang
     7     /// 时间:2016/6/1 22:05:57 
     8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
     9     /// ConcreteColleague2说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
    10     /// </summary> 
    11     public class ConcreteColleague2 : Colleague
    12     {
    13         public ConcreteColleague2(Mediator mediator)
    14             : base(mediator)
    15         {
    16         }
    17 
    18         public void Send(string message)
    19         {
    20             mediator.Send(message, this);
    21         }
    22 
    23         public void Notify(string message)
    24         {
    25             Console.WriteLine("同事2得到消息:" + message);
    26         }
    27     }
    28 }
    View Code
     1 using System;
     2 
     3 namespace Mediator
     4 {
     5     /// <summary> 
     6     /// 作者:bzyzhang
     7     /// 时间:2016/6/1 22:00:29 
     8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
     9     /// Mediator说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
    10     /// </summary> 
    11     public abstract class Mediator
    12     {
    13         public abstract void Send(string message,Colleague colleague);
    14     }
    15 }
    View Code
     1 using System;
     2 
     3 namespace Mediator
     4 {
     5     /// <summary> 
     6     /// 作者:bzyzhang
     7     /// 时间:2016/6/1 22:02:44 
     8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
     9     /// ConcreteMediator说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
    10     /// </summary> 
    11     public class ConcreteMediator:Mediator
    12     {
    13         private ConcreteColleague1 colleague1;
    14         private ConcreteColleague2 colleague2;
    15 
    16         public ConcreteColleague1 Colleague1
    17         {
    18             set { colleague1 = value; }
    19         }
    20 
    21         public ConcreteColleague2 Colleague2
    22         {
    23             set { colleague2 = value; }
    24         }
    25         public override void Send(string message, Colleague colleague)
    26         {
    27             if (colleague == colleague1)
    28             {
    29                 colleague2.Notify(message);
    30             }
    31             else
    32             {
    33                 colleague1.Notify(message);
    34             }
    35         }
    36     }
    37 }
    View Code
     1 namespace Mediator
     2 {
     3     class Program
     4     {
     5         static void Main(string[] args)
     6         {
     7             ConcreteMediator concreteMediator = new ConcreteMediator();
     8 
     9             ConcreteColleague1 colleague1 = new ConcreteColleague1(concreteMediator);
    10             ConcreteColleague2 colleague2 = new ConcreteColleague2(concreteMediator);
    11 
    12             concreteMediator.Colleague1 = colleague1;
    13             concreteMediator.Colleague2 = colleague2;
    14 
    15             colleague1.Send("吃过饭了吗?");
    16             colleague2.Send("没有呢,你打算请客?");
    17         }
    18     }
    19 }
    View Code
  • 相关阅读:
    jquery Banner 图片自动轮换显示
    JavaScript:appendDiv(append和appendChild的区别)
    JavaScript:addEventListener()和removeEventListener()追加事件和删除追加事件
    Cesium源码之CesiumMath(1.62版)
    cesium功能插件
    JavaScript之prototype
    JavaScript规范define(AMD)
    Cesium之时间
    Cesium CallbackProperty实例
    pku3620 Avoid The Lakes 查找最大连通湖(简单深搜)
  • 原文地址:https://www.cnblogs.com/bzyzhang/p/5551301.html
Copyright © 2011-2022 走看看