Има много модели на поведенчески дизайн в програмирането и днес ще разгледаме модела на дизайн на посредника.

Медиаторният шаблон за проектиране се използва за отделяне на компонентите на проекта чрез въвеждане на допълнителен слой между тях, така че цялото взаимодействие между тези обекти ще минава през този слой и тези взаимодействащи компоненти няма да знаят един за друг. Това носи всички привилегии на слабо свързаната структура, както е показано по-долу:

  • Намалява разходите за поддръжка
  • Лесно разтегателен

Един реален пример за използването на дизайн шаблона на посредника са сервитьорите в ресторантите. Клиентите поръчват ястия, като не говорят с директни готвачи, а поръчките се приемат от сервитьори и чрез сервитьори те могат да знаят кога поръчката ще бъде готова. Така готвачите не трябва да подхождат индивидуално към всеки клиент и да доставят храна индивидуално, а всичко, което знаят е сервитьорът, чрез който ще получат поръчката и ще им дадат готовите ястия, така че процесът е по-малко сложен за тях.

Нека го видим в примера за реален код. В нашия случай създаваме приложение за чат с множество потребители, в което те могат да чатят помежду си в група. За целта нека създадем интерфейс „ChatApp“ като обект Mediator:

След това ще създадем нашия план за Компонент с абстрактния клас „Потребител“, както е показано по-долу:

Сега е време да създадете внедряването както на Mediator, така и на Components:

И така, това, което направихме по-горе, е следното. Първо създадохме нашия Mediatorинтерфейс като „ChatApp“, за да се държи като слой между нашите компоненти по-нататък. Не забравяйте, че ние използваме точно този интерфейс като допълнителен слой в нашите Компоненти, а не неговата реализация! След това създаваме неговата реализация, за да улавяме повикванията и да ги обработваме под формата на класа „ChatAppImpl“.

След това създаваме нашия абстрактен клас Компонент с името „Потребител“ като рамка за всички други класове компоненти, така че той притежава основните методи в него, които всеки от нашите компонентитрябва да притежават.

След това класът „UserImpl“, който създадохме, се държи като конкретен компонент тук, който имплементира методите „User“ вътре.

И така, това, което постигнахме в крайна сметка чрез това, както можете да видите, е, че когато един потребител изпрати съобщение до чата, вместо да държи други потребители в него и да изпраща това съобщение поотделно, потребителят просто предава това съобщение на Mediator (в нашия случай това е „ChatApp“) и го оставете да се справи.

Като цяло, едно от основните предимства на дизайн шаблона на посредника е да отделя смущаващото поведение чрез локализирането му в рамките на обекта на медиатора и осигуряване на среда за свободно свързване между компонентите

Въпреки това, понякога това може да причини сложност на индивидуалния посреднически обект над търговската сложност на взаимодействието на компонентите. Това означава, че колкото повече има взаимодействия между компонентите, толкова по-сложен става медиаторът.

Кодът е достъпен в Github repo тук.

Има още 11 модели на поведенчески дизайн, които са:

  1. Модел за проектиране на верига от отговорност
  2. Модел за проектиране на интерпретатора
  3. Модел за проектиране на итератор
  4. Команден шаблон за проектиране
  5. Модел за дизайн на Memento
  6. Модел за проектиране на нулев обект
  7. Образец на наблюдател
  8. Държавен модел на дизайн
  9. Модел за проектиране на стратегия
  10. Модел за проектиране на метод на шаблон
  11. Модел за дизайн на посетител