Design Pattern Basic Tutorial

adplus-dvertising
Mediator Pattern
Previous Home Next

The Mediator Pattern is used to create an object, which is encapsulate the all details and provide the facility of interaction of other object. the relationship is loosely decoupled.

Benefit and use of Mediator
  1. It is used in Partition of a system in small objects.
  2. Limited subclasses.
  3. It provide the Broad committee for Clarify the complex relationship.
  4. It is Increase the objects reusability's.
  5. It is used for Simplification to object protocols.
  6. The Mediator is provide the Multidirectional Relationship between control class and other participating classes.

when a button will be click, the related actions of the program should be enabled or disabled. We are going to design a Mediator class which is include all related classes:

Example


package r4r;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

interface middle {
void linker();
}
class Mediator {
BtnView btnView;
BtnSearch btnSearch;
BtnBook btnBook;
LblDisplay show;
//....
void registerView(BtnView v) {
btnView = v;
}
void registerSearch(BtnSearch s) {
btnSearch = s;
}
void registerBook(BtnBook b) {
btnBook = b;
}
void registerDisplay(LblDisplay d) {
show = d;
}
void book() {
btnBook.setEnabled(false);
btnView.setEnabled(true);
btnSearch.setEnabled(true);
show.setText("booking...");
}
void view() {
btnView.setEnabled(false);
btnSearch.setEnabled(true);
btnBook.setEnabled(true);
show.setText("viewing...");
}
void search() {
btnSearch.setEnabled(false);
btnView.setEnabled(true);
btnBook.setEnabled(true);
show.setText("searching...");
}
}
class BtnView extends JButton implementsmiddle {
Mediator med;
BtnView(ActionListener al, Mediator m) {
super("View");
addActionListener(al);
med = m;
med.registerView(this);
}
public void setEnabled(boolean b) {
// TODO Auto-generated method stub

}
public void execute() {
med.view();
}
@Override
public void linker() {
// TODO Auto-generated method stub

}
}

class BtnSearch extends JButton implements middle {
Mediator med;
BtnSearch(ActionListener al, Mediator m) {
super("Search");
addActionListener(al);
med = m;
med.registerSearch(this);
}
public void setEnabled(boolean b) {
// TODO Auto-generated method stub

}
public void execute() {
med.search();
}
@Override
public void linker() {
// TODO Auto-generated method stub

}
}

class BtnBook extends JButton implementsmiddle {
Mediator med;
BtnBook (ActionListener al, Mediator m) {
super("Book");
addActionListener(al);
med = m;
med.registerBook(this);
}
public void setEnabled(boolean b) {
// TODO Auto-generated method stub

}
public void execute() {
med.book();
}
@Override
public void linker() {
// TODO Auto-generated method stub

}
}

class LblDisplay extends JLabel{
Mediator md;
LblDisplay (Mediator m) {
super("Just start...");
md = m;
md.registerDisplay(this);
setFont(new Font("Arial",Font.BOLD,24));
}
public void setText(String string) {
// TODO Auto-generated method stub

}
}
public class mediatortest extends 
JFrame implements ActionListener {

Mediator med = new Mediator();
mediatortest() {
JPanel p = new JPanel();
p.add(new BtnView(this,med));
p.add(new BtnBook(this,med));
p.add(new BtnSearch(this, med));
getContentPane().add(new LblDisplay(med), "North");
getContentPane().add(p, "South");
setSize(400,200);
setVisible(true);
   
}
public void actionPerformed1(ActionEvent ae) {
middle mid = (middle)ae.getSource();
mid.linker();
}

public static void main(String[] args)throws Exception {
new mediatortest();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

}
}
Previous Home Next