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(); } }