Mediator

Mediator

Mediator

Шаблон Mediator(также известный как Посредник)Шаблон проектирования

Поведенческий шаблон (Behavioral).

Обеспечивает взаимодействие множества объектов, сформировав при этом слабую связанность и избавив объекты от необходимости явно ссылаться друг на друга.

Содержание

Проблема

Обеспечить взаимодействие множества объектов, сформировав при этом слабую связанность и избавив объекты от необходимости явно ссылаться друг на друга.

Решение

Создать объект, инкапсулирующий способ взаимодействия множества объектов.

Преимущества

Устраняется связанность между "Коллегами", централизуется управление.

Структура

UML диаграмма, описывающая структура шаблона проектирования Посредник
  • Mediator – "Посредник"
  • ConcreteMediator – "Конкретный посредник"
  • Классы Colleague – "Коллеги"

Описание

"Посредник" определяет интерфейс для обмена информацией с объектами "Коллеги", "Конкретный посредник" координирует действия объектов "Коллеги". Каждый класс "Коллеги" знает о своем объекте "Посредник", все "Коллеги" обмениваются информацией только с посредником, при его отсутствии им пришлось бы обмениваться информацией напрямую. "Коллеги" посылают запросы посреднику и получают запросы от него. "Посредник" реализует кооперативное поведение, пересылая каждый запрос одному или нескольким "Коллегам".

Пример на языке Java

//Интерфейс для коллег
interface Command {
    void execute();
}
 
//Конкретный посредник
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 implements Command {
 
    Mediator med;
 
    BtnView(ActionListener al, Mediator m) {
        super("View");
        addActionListener(al);
        med = m;
        med.registerView(this);
    }
 
    public void execute() {
        med.view();
    }
 
}
 
//Конкретный коллега
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();
    }
 
}
 
//Конкретный коллега
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();
    }
 
}

Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Mediator" в других словарях:

  • mediator — MEDIATÓR, OÁRE, mediatori, oare, subst. 1. s.m. şi f. Persoană, guvern etc. care mijloceşte o înţelegere între două părţi (adverse), care face un act de mediaţie; mijlocitor, intermediar. 2. s.n. Intermediar chimic care asigură transmiterea… …   Dicționar Român

  • Mediator — may refer to: A neutral party who assists in negotiations and conflict resolution, the process being known as mediation Mediator variable in statistics The Mediator pattern in computer science The multiprotein Mediator (coactivator) in Molecular… …   Wikipedia

  • médiator — [ medjatɔr ] n. m. • 1902; mot lat. ♦ Mus. Lamelle ovoïde utilisée pour jouer de certains instruments à cordes pincées (mandoline, banjo). ⇒ plectre. ● médiator nom masculin Synonyme de plectre. ● médiator (synonymes) nom masculin Synonymes …   Encyclopédie Universelle

  • mediator — me·di·a·tor / mē dē ˌā tər/ n: one that works to effect reconciliation, settlement, or compromise between parties at variance compare arbitrator Merriam Webster’s Dictionary of Law. Merriam Webster. 1996 …   Law dictionary

  • Mediator — Me di*a tor, n. [L. mediator: cf. E. m[ e]diateur.] One who mediates; especially, one who interposes between parties at variance for the purpose of reconciling them; hence, an intercessor. [1913 Webster] For there is one God, and one mediator… …   The Collaborative International Dictionary of English

  • Mediator — (lat. mediator „Mittler“) steht für: ein (außergerichtlichen) Vermittler in einem Kommunikationsprozess, siehe Mediation chemische Stoffe zur Übertragung von Signalen, siehe Botenstoff die Mediatorvariable, die den statistischen Zusammenhang… …   Deutsch Wikipedia

  • mediator — mid 14c., from L.L. mediatorem (nom. mediator) one who mediates, agent noun from pp. stem of mediari to intervene, mediate, also to be or divide in the middle, from L. medius in the middle (see MEDIAL (Cf. medial) (adj.)). Originally applied to… …   Etymology dictionary

  • mediator — {{/stl 13}}{{stl 8}}rz. mos I, Mc. mediatororze; lm M. mediatororzy {{/stl 8}}{{stl 7}} pośrednik w sporze; rozjemca : {{/stl 7}}{{stl 10}}Mediator zwaśnionych stron. Podjąć się roli mediatora. {{/stl 10}} …   Langenscheidt Polski wyjaśnień

  • mediator — (Del lat. mediātor, ōris). m. Juego de naipes de varios lances, semejante al tresillo, hombre y otros …   Diccionario de la lengua española

  • Mediator — (lat.), Mittelsperson; mediatorisch (mediativ), vermittelnd …   Meyers Großes Konversations-Lexikon


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»