Padrões de projeto

3 respostas
D

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

3 Respostas

InicianteJavaHenriqu
//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 :wink:

:thumbup:

D

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…

Dieval_Guizelini

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.

Criado 3 de junho de 2012
Ultima resposta 3 de jun. de 2012
Respostas 3
Participantes 3