Шаблон проектирования наблюдателя - несколько типов событий - PullRequest
1 голос
/ 14 января 2011

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

Я начал с одного метода по теме addEvent (), но по мере добавления большего количества наблюдателей я обнаружил, что параметры, необходимые для детализации всей информации, необходимой для каждого слушателя, начали расти.

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

Моя альтернативная мысль - вернуться к addEvent () и передать тип события (например, USER_LOGOUT) вместе с связанными данными, и каждый наблюдатель поддерживает свой собственный список обработчиков событий, которые он ищет (возможно, в операторе switch),но это кажется громоздким.Кроме того, мне нужно убедиться, что вместе с типом события были также переданы достаточные данные.

Как правильно это сделать?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...