Я работаю над сложным и очень большим веб-приложением.Некоторые из классов в указанном приложении требуют выполнения различных методов в удаленных объектах, и я быстро осознаю и сталкиваюсь с ошибками, связанными с антипаттерном «действие на расстоянии».
Пример 1: Некоторые изклассы требуют выполнения ежедневных методов очистки, таких как reaper()
, cleanup()
, send_daily_status_messages()
и т. д.
Пример 2. Некоторые классы изменяют состояние приложения и требуют удаленного объекта длявыполнить refresh()
своего собственного состояния.
Пример 3. Возвращаясь к примеру 1, некоторые объекты, распространяющиеся по всему приложению, предоставляют send_daily_status_messages()
.
различные биты содержимого для решения этой проблемы.Наша команда создала класс Events, который централизует все эти вызовы.Однако мы находим, что сам класс Events является слишком «отдаленным», в том смысле, что иногда мы вносим изменения в распределенные объекты, забываем вносить изменения в вызовы в классе Events и затем видим ошибки.
Мне интересно, есть ли лучшие образцы там?
Одна мысль: чтобы объекты "регистрировались" в каком-то динамическом классе Events при инициализации.Это будет держать код вызова рядом с каждым объектом.Возможно, объекты могут даже создавать различные события?
Наконец, это для веб-приложения на основе Perl, использующего Moose.Поэтому любые рекомендации, ориентированные на Perl, ориентированные на Moose, включая рекомендации CPAN, будут наиболее цениться!