Является ли ESB примером шаблона Mediator?
Я только обновлял шаблоны проектирования и пытался отобразить примеры из реального мира, с которыми я сталкивался, например, шаблоны проектирования: шаблон Proxy -> WCF
Проходя через шаблон "Посредник", на ум пришла шина Enterprise Service, и поэтому возник вопрос.
1 ответ
В паттерне посредника "связь между объектами заключена в объекте-посреднике". Цель состоит в том, чтобы добиться большей сплоченности в классах, оставив детали маршрутизации связи в посреднике. Объекты напрямую связаны с посредником и слабо связаны друг с другом.
В архитектуре Enterprise Service Bus "все сервисы клиентов взаимодействуют одинаково с ESB: ESB преобразует сообщение в правильный тип сообщения и отправляет сообщение в правильную службу производителя".
Мне это кажется более абстрактным, чем GoF Mediator, примеры которого, как правило, связаны с конкретным приложением. Например, поведение пользовательского интерфейса может указывать, что когда пользователь щелкает элемент в списке, выбранный элемент должен быть скопирован в текстовое поле. Этот тип поведенческой логики довольно специфичен для конкретного приложения, но трудно поддерживать эту логику, если она распространяется среди сотрудничающих классов (например, список элементов и текстовое поле каждый управляют некоторой частью элемента управления). Распространение этой логики делает взаимодействующие объекты менее связными. Посредник GoF централизует эту логику приложения, поэтому список элементов не знает о текстовых полях и т. Д.
Я считаю, что ESB предоставляет службы маршрутизации, и, возможно, не так легко настроить его для поведения конкретного приложения. Например, сущности все еще должны знать друг о друге для связи, но детали были абстрактными. Поведение определяется в правилах. Я могу рассматривать ESB как посредника общего назначения, но абстракции для обеспечения универсальности могут усложнить понимание (в конечном итоге менее связно), чем посредник GoF для данного приложения.
ESB - это скорее архитектурный паттерн (обобщенные сервисы), тогда как посредник может быть паттерном, очень специфичным для приложения.