Oi preciso de uma ajuda, preciso fazer um trabalho sobre padrão de projeto e o padrão que eu preciso falar é sobre o Mediator…
será que vcs poderiam me ajudar me mostrando um código comentado em Java sobre esse padrão
Padrões de projeto
3 Respostas
//Colleague interface
interface Command {
void execute();
}
//Concrete mediator
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?");
}
}
//A concrete colleague
class BtnView extends JButton implements Command {
Mediator med;
BtnView(ActionListener al, Mediator m) {
super("View");
addActionListener(al);
med = m;
med.registerView(this);
}
public void execute() {
med.view();
}
}
//A concrete colleague
class BtnSearch extends JButton implements Command {
Mediator med;
BtnSearch(ActionListener al, Mediator m) {
super("Search");
addActionListener(al);
med = m;
med.registerSearch(this);
}
public void execute() {
med.search();
}
}
//A concrete colleague
class BtnBook extends JButton implements Command {
Mediator med;
BtnBook(ActionListener al, Mediator m) {
super("Book");
addActionListener(al);
med = m;
med.registerBook(this);
}
public void execute() {
med.book();
}
}
class LblDisplay extends JLabel {
Mediator med;
LblDisplay(Mediator m) {
super("Just start?");
med = m;
med.registerDisplay(this);
setFont(new Font("Arial", Font.BOLD, 24));
}
}
class MediatorDemo extends JFrame implements ActionListener {
Mediator med = new Mediator();
MediatorDemo() {
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 actionPerformed(ActionEvent ae) {
Command comd = (Command) ae.getSource();
comd.execute();
}
public static void main(String[] args) {
new MediatorDemo();
}
}
Fonte: http://pt.wikipedia.org/wiki/Mediator
P.S.: Acho que todo mundo da sua classe irá utilizar este código 
:thumbup:
Obrigado
eu preciso saber explicar um código que use o mediator será que tem um mais simples
se vcs puderem me ajudar a explicar um código que utilize opadrão mediator…
por favor…
Olá,
a definição, segundo o GoF, é:
Dentro das modelagens, essa situação ocorre frequentemente em relações fracas de muitos para muitos.
Por exemplo, pense, em pessoas e grupos, onde um grupo pode ter várias pessoas associadas em um determinado momento e uma mesma pessoa pode fazer parte de vários grupos. Como incluir e remover as pessoas dos grupos de forma mais simples?
Solução: um mediador (mediator).
Basicamente o uso do mediador deve encapsular toda a comunicação entre um grupo de objetos
[list]Cada objeto participante conhece o mediador mas ignora a existência dos outros objetos[/list]
[list]O mediador conhece cada um dos objetos participantes[/list]
A interface do Mediador é usada pelos colaboradores para iniciar a comunicação e receber notificações:
[list]O mediador recebe requisições dos remetentes[/list]
[list]O mediador repassa as requisições aos destinatários[/list]
[list]Toda a política de comunicação é determinada pelo mediador (geralmente através de uma implementação concreta do mediador)[/list]
Mas cuidado, o mediator pode-se tornar uma fonte de gargalo e risco para o sistema.