interface ĠMed iator Ġ{ ĊĊ ĉ fun Ġnotify ( sender : ĠComponent , Ġmsg : ĠString ): ĠUnit Ċ } Ċ Ċ abstract Ġclass ĠComponent ( private Ġval Ġmedi ator : ĠMed iator ) Ġ{ ĊĊ ĉ fun Ġclick (): ĠUnit Ġ{ Ċĉ ĉ medi ator . notify ( this , Ġ" Click ") Ċ ĉ } ĊĊ ĉ fun Ġkey press (): ĠUnit Ġ{ Ċĉ ĉ medi ator . notify ( this , Ġ" Key press ") Ċ ĉ } Ċ } Ċ Ċ class ĠButton Ġ: ĠComponent Ġ{ ĊĊ ĉ constructor ( medi ator : ĠMed iator ) Ġ: Ġsuper ( medi ator ) Ċ } Ċ Ċ class ĠText box Ġ: ĠComponent Ġ{ ĊĊ ĉ constructor ( medi ator : ĠMed iator ) Ġ: Ġsuper ( medi ator ) Ċ } ĊĊ Ċ class ĠCheckbox Ġ: ĠComponent Ġ{ ĊĊ ĉ constructor ( medi ator : ĠMed iator ) Ġ: Ġsuper ( medi ator ) Ċ } Ċ Ċ class ĠConcrete Mediator Ġ: ĠMed iator Ġ{ ĊĊ ĉ override Ġfun Ġnotify ( sender : ĠComponent , Ġmsg : ĠString ): ĠUnit Ġ{ ĊĊĉ ĉ if Ġ( sender Ġis ĠButton ) Ġprintln ("[ Button ] Ġ$ msg ") Ċĉ ĉ else Ġif Ġ( sender Ġis ĠText box ) Ġprintln ("[ Text box ] Ġ$ msg ") Ċĉ ĉ else Ġif Ġ( sender Ġis ĠCheckbox ) Ġprintln ("[ Checkbox ] Ġ$ msg ") Ċ ĉ } Ċ } ĊĊ Ċ fun Ġmain (): ĠUnit Ġ{ Ċ ĉ val Ġmedi ator : ĠMed iator Ġ= ĠConcrete Mediator () Ċ ĉ val Ġbutton : ĠComponent Ġ= ĠButton ( medi ator ) Ċ ĉ val Ġcheckbox : ĠComponent Ġ= ĠCheckbox ( medi ator ) Ċ ĉ val Ġtext box : ĠComponent Ġ= ĠText box ( medi ator ) ĊĊ ĉ button . click (); Ċ ĉ button . keypress () Ċ ĉ checkbox . click (); Ċ ĉ checkbox . keypress () Ċ ĉ textbox . click (); Ċ ĉ textbox . keypress () Ċ }