В настоящее время я внедряю шаблон проектирования Observer и использую его для обработки добавления элементов в сеанс, создания журналов ошибок и записи сообщений пользователю с отзывами об их действиях (например, вы только что вышли из системы!).
Я начал с одного метода по теме addEvent (), но по мере добавления большего количества наблюдателей я обнаружил, что параметры, необходимые для детализации всей информации, необходимой для каждого слушателя, начали расти.
Теперь у меня есть 3 метода, называемые addMessage (), addStorage () и addLog ().Они добавляют данные в массив событий, который имеет ключ, связанный с типом события (например, журнал, сообщение, хранилище), но я начинаю чувствовать, что теперь субъект должен слишком много знать о подключенных слушателях.
Моя альтернативная мысль - вернуться к addEvent () и передать тип события (например, USER_LOGOUT) вместе с связанными данными, и каждый наблюдатель поддерживает свой собственный список обработчиков событий, которые он ищет (возможно, в операторе switch),но это кажется громоздким.Кроме того, мне нужно убедиться, что вместе с типом события были также переданы достаточные данные.
Как правильно это сделать?
Пожалуйста, дайте мне знать, если я смогу объяснитьЛюбые части этого дальше.Я надеюсь, что вы можете помочь и увидеть проблему, с которой я борюсь.