2014-10-12 3 views
0

Использует ли синглтон для отправки сообщений между классами хорошая или плохая идея?Использование одноточечного соединения для отправки сообщений между любыми двумя классами

Одна сторона связи регистрируется как слушатель (прослушивание определенной строки или объекта, возможно с некоторыми параметрами), а другая сторона отправляет сообщения. Для любого сообщения может быть несколько слушателей.

Использование такого шаблона означает, что объекты в разных проектах могут связываться без ссылки друг на друга.

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

Каковы недостатки такого подхода?

Проблемы, которые приходят на ум, - это трудно сделать тестирование и возможность неожиданных последствий, поскольку все, что в приложении может прослушивать событие и в совершенно несвязанных проектах.

+0

Кажется мне, что вам нужно опубликовать подписаться шаблон дизайна для этого сценария. http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern http://www.codeproject.com/Articles/34316/Topic-based-Publish-Subscribe-design-pattern-imple –

ответ

0

Или ... как другой вариант Mediator design patterm. Поскольку по понятию он определяет объект, который инкапсулирует, как взаимодействует набор объектов. Посредник способствует свободному соединению, не допуская прямого доступа объектов друг к другу, и позволяет вам независимо изменять их взаимодействие.

Касательно

сделать это трудно сделать тестирование

вы всегда можете рассмотреть насмешливый.

1

Для подобных ситуаций мне нравится использовать Observer pattern и сделать диспетчер событий Singleton.

enter image description here

+0

Я собирался рекомендовать то же самое :) – Coldstar

Смежные вопросы