Mediator 中介者模式

public abstract class Element
    {
        protected Mediator mediator;

        public Element( Mediator mediator )
        {
            this.mediator = mediator;
            this.mediator.AddElement( this );
        }

        public virtual void OnChange()
        {
            mediator.Notify();
        }
    }
public abstract class Mediator
    {
        IList<Element> list;

        public abstract void Notify();
        public virtual void AddElement( Element element )
        {
            if( list == null )
            {
                list.Add( element );
            }
        }
    }
public class ClipBorad:Element
    {
        public ClipBorad( Mediator mediator )
            : base( mediator )
        {
        }

        public void Invoke()
        {
            OnChange();
        }
    }
  public class ConcreteMediator:Mediator
    {
        public override void Notify()
        {
        }
    }
public class CutMenuItem:Element
    {
        public CutMenuItem( Mediator mediator )
            : base( mediator )
        {
        }

        public void Click()
        {
            mediator.Notify();
        }
    }
    public class TextArea:Element
    {
        public TextArea( Mediator mediator )
            : base( mediator )
        {
        }

        public void Process()
        {
            mediator.Notify();
        }
    }
 public class ToolBarButton:Element
    {
        public ToolBarButton( Mediator mediator )
            : base( mediator )
        {
        }

        public void Click()
        {
            OnChange();
        }
    }
原文地址:https://www.cnblogs.com/wangchuang/p/3014389.html