Логирование с помощью шаблона проектирования Observer

Код машин 2 дек. 2021 г.

По поводу логирования. Я там реализовал паттерн Observer, но в ручном режиме, так как ларавелевская реализация, насколько я понимаю, работает только с контроллерами.

В папке Commands/CommandsObserver/Intarfaces я сделал 2 интерфейса, один для наблюдателей, другой для сущности, которая будет наблюдаться.
Наблюдатель должен реализовывать метод update(), который и будет выполнять действие, когда будет получать уведомление от наблюдаемой сущности.

А наблюдаемая сущность должна уметь подписать на себя наблюдателя, попросить больше не наблюдать и уведомлять наблюдателя о событиях.

Наблюдатель реализуется в классе CommandObserver и является абстрактным. По сути, он занимается проверкой, что к ниму пришло уведомление именно от команды, а реализацию update() он делегирует классу Logger, который и выполняет логирование.

Наблюдаемой сущностью, я сделал класс CoreCommand, что бы не реализовывать методы attach(), detach() и notify() в каждой команде. А что бы команды наследовались от CoreCommand и тогда сразу содержали в себе реализацию этих методов

Так же, что бы передавать классу Logger информацию, которую нужно залогировать, помимо названия команды, в классе CoreCommand реализованы методы setLogInformation() и getLogInformation().

В итоге, что бы реализовать логирование, нам достаточно отнаследовать команду от CoreCommand и в методы setLogInformation() передать информацию, что нам нужно залогировать. и в handle() в конце написать parent::notify(), что бы уведомить наблюдателя, что произошло действие.

Откройте силу нейросетей для создания неповторимых объявлений!
Перейдите по ссылке, и выбрав Генератора объявлений, скажите или напишите название своего продукта или услуги.
Удивите конкурентов и привлеките внимание как никогда ранее!

Теги

🚀 БЕЗ РЕГИСТРАЦИИ: Перейдите в Телеграм и погрузитесь в мир AI без лишних формальностей. Экономьте свое время на то, что действительно важно для вас!

📍 ДОСТУП В РОССИИ: Наш сервис работает в России без ограничений. Наслаждайтесь надежностью и комфортом "Белоснежка | ChatGPT для всех" уже сегодня.

🎙 УДОБНЫЙ ГОЛОСОВОЙ ВВОД: Оперативность и удобство — вот наши приоритеты. Говорите, и Белоснежка выполнит всё за вас!

👥 СПЕЦИАЛЬНО НАСТРОЕННЫЕ ПОМОЩНИКИ: Наши AI-помощники готовы к работе! Они помогут вам сосредоточиться и достичь новых высот в любой задаче.

🤖 ПРОДВИНУТЫЙ AI: Используйте нашу индивидуально настроенную платформу ChatGPT и откройте для себя всё многообразие искусственного интеллекта!

Не упустите шанс — присоединяйтесь к "Белоснежка | ChatGPT для всех" прямо сейчас и откройте для себя новые горизонты возможностей!

Все представленные на сайте материалы предназначены исключительно для образовательных целей и не предназначены для медицинских консультаций, диагностики или лечения. Администрация сайта, редакторы и авторы статей не несут ответственности за любые последствия и убытки, которые могут возникнуть при использовании материалов сайта.