Changes

Jump to: navigation, search

Mediator

2,533 bytes added, 17:16, 27 March 2007
no edit summary
__TOC__ ==Diagram==
[[Image:Example.png]]
==Explain==
The mediator pattern acts as a mediator by directing the communication between objects. This allows for lower coupling and more flexability and ease of modification if the interaction between objects is ever changed.
As seen in the Diagram above the mediator pattern generally involves a mediator object which hold serveral colleagues. The mediator is used to relay messages between these colleagues.
 
==Example==
===General Java Example===
This example is a general example taken from [[http://my.execpc.com/~gopalan/design/behavioral/mediator/mediator.html Execpc]]
 
<pre>
//
// Mediator.java
//
import java.io.*;
 
abstract class Mediator
{
 
public abstract void colleagueChanged(Colleague theChangedColleague);
 
public static void main(String args[])
{
 
ConcreteMediator aConcreteMediator = new ConcreteMediator();
aConcreteMediator.createConcreteMediator();
 
(aConcreteMediator.getOneColleage()).Display();
(aConcreteMediator.getNextColleague()).Display();
 
OneColleague newColleague = new OneColleague(aConcreteMediator, "OneColleague");
 
aConcreteMediator.colleagueChanged( (OneColleague)newColleague );
 
(aConcreteMediator.getOneColleage()).Display();
(aConcreteMediator.getNextColleague()).Display();
 
}
 
}
//
// Colleague.java
//
abstract class Colleague
{
private Mediator _aMediator;
 
public Colleague(Mediator m)
{
_aMediator = m;
}
 
public void changed()
{
_aMediator.colleagueChanged(this);
}
 
public Mediator getMediator()
{
return(_aMediator);
}
 
public abstract void Display();
}
//
// ConcreteMediator.java
//
class ConcreteMediator extends Mediator
{
private OneColleague _aOneColleague;
private NextColleague _aNextColleague;
 
public void colleagueChanged( Colleague theChangedColleague )
{
 
if ((( OneColleague)theChangedColleague).getSelection().equals( _aOneColleague.getSelection() ) )
{
_aNextColleague.setText( _aOneColleague.getSelection() );
}
 
}
 
public void createConcreteMediator()
{
 
_aOneColleague = new OneColleague(this, "OneColleague");
_aNextColleague = new NextColleague(this, "NextColleague");
 
}
 
public OneColleague getOneColleage()
{
return(_aOneColleague);
}
 
public NextColleague getNextColleague()
{
return(_aNextColleague);
}
}
//
// OneColleague.java
//
class OneColleague extends Colleague
{
private String _text;
 
public OneColleague(Mediator m, String t)
{
super( m );
_text = t;
}
 
public void setText(String text)
{
_text = text;
}
 
public String getSelection()
{
return(_text);
}
 
public void Display()
{
System.out.println("OneColleague = " + _text);
}
}
</pre>
===LimeWire===
LimeWire uses several mediators in their coding. This Mediator is used to control the tip of the day window in limewire.
1
edit

Navigation menu