Введение
Шаблон проектирования архитектуры программного обеспечения
В разработке программного обеспечения шаблон "Посредник" определяет объект, инкапсулирующий способы взаимодействия набора объектов. Этот шаблон считается поведенческим, поскольку он может изменять поведение программы во время выполнения. В объектно-ориентированном программировании программы часто состоят из множества классов. Бизнес-логика и вычисления распределены между этими классами. Однако, по мере добавления новых классов в программу, особенно при сопровождении и/или рефакторинге, проблема взаимодействия между этими классами может усложняться. Это затрудняет чтение и поддержку программы. Кроме того, внесение изменений в программу может оказаться сложным, поскольку любое изменение может повлиять на код в нескольких других классах. С использованием шаблона "Посредник" взаимодействие между объектами инкапсулируется в объекте-посреднике. Объекты больше не взаимодействуют напрямую друг с другом, а взаимодействуют через посредника. Это снижает зависимости между взаимодействующими объектами, тем самым уменьшая связанность.
In software engineering, the mediator pattern defines an object that encapsulates how a set of objects interact. This pattern is considered to be a behavioral pattern due to the way it can alter the program's running behavior. In object oriented programming, programs often consist of many classes. Business logic and computation are distributed among these classes. However, as more classes are added to a program, especially during maintenance and/or refactoring, the problem of communication between these classes may become more complex. This makes the program harder to read and maintain. Furthermore, it can become difficult to change the program, since any change may affect code in several other classes. With the mediator pattern, communication between objects is encapsulated within a mediator object. Objects no longer communicate directly with each other, but instead communicate through the mediator. This reduces the dependencies between communicating objects, thereby reducing coupling.
Обзор
Шаблон проектирования «Посредник» — один из двадцати трех известных шаблонов проектирования, описывающих способы решения часто встречающихся задач проектирования для создания гибкого и повторно используемого объектно-ориентированного программного обеспечения, то есть объектов, которые проще реализовать, изменять, тестировать и повторно использовать.
Проблемы, которые может решить модель дизайна медиатора
Следует избегать тесной связанности между набором взаимодействующих объектов. Должна быть возможность изменять взаимодействие между набором объектов независимо друг от друга. Определение набора взаимодействующих объектов через прямой доступ и изменение друг друга негибко, поскольку это приводит к тесной связанности объектов, делая невозможным изменение взаимодействия без изменения самих объектов. Это препятствует повторному использованию объектов и затрудняет их тестирование. Тесно связанные объекты сложно реализовывать, изменять, тестировать и повторно использовать, так как они зависят от и знают о множестве других объектов.
Решения, описанные в модели моделирования медиатора
Определите отдельный (посредник) объект, инкапсулирующий взаимодействие между набором объектов. Объекты делегируют свое взаимодействие объекту-посреднику, вместо того чтобы взаимодействовать друг с другом напрямую. Объекты взаимодействуют друг с другом опосредованно через объект-посредник, который управляет и координирует это взаимодействие. Это обеспечивает слабую связанность объектов. Они лишь ссылаются на свой объект-посредник и знают о нем, не имея при этом явных знаний друг о друге. См. также диаграмму классов и диаграмму последовательностей UML ниже.
Определение
Суть шаблона «Медиатор» заключается в «определении объекта, инкапсулирующего способы взаимодействия набора объектов». Он способствует слабой связанности, предотвращая прямые ссылки объектов друг на друга, и позволяет изменять их взаимодействие независимо. Клиентские классы могут использовать медиатор для отправки сообщений другим клиентам и получать сообщения от них через событие, возникающее в классе медиатора.