Очевидно, что [FrontController] использует шаблон синглтона.
FrontController не должен быть реализован как синглтон.Книга не предлагает ничего подобного.Пример в книге использует сервлет для обработчика.
Тот факт, что класс понадобится только один раз в приложении, не оправдывает его реализацию как Singleton.В нем отсутствует цель Singleton, которая заключается в принудительном применении , класс может иметь только один экземпляр и , обеспечивающий глобальный доступ к нему.Если вам нужен конкретный экземпляр только один раз, рассмотрите Просто создайте один .
В настоящее время многие люди (включая Эриха Гамму из известности GoF) рассматривают Singleton как запах кода и не рекомендуют его использовать.В архитектуре без общего доступа Singleton может ограничивать только экземпляры внутри текущего запроса, поэтому использование в PHP ограничено.Глобальный доступ к объекту может быть достигнут без шаблона Singleton, либо с помощью (злого) глобального ключевого слова или статических методов.Глобальный доступ всегда создает ненужную связь.Лучшим способом было бы использовать Dependency Injection, которое имеет дополнительное преимущество, заключающееся в меньшем сцеплении и, следовательно, лучшем обслуживании.
, так что я все еще оставлю ему имя Front?Если нет, как я это называю?Поскольку это довольно большой пакет, мне просто нужно как можно больше следовать соглашениям (не догматично!)
Не существует такого соглашения в отношении именования классов Front классы, насколько мне известно.То, что вы описываете, может быть Facade или Gateway .Кроме того, вы уверены, что не можете назвать класс после PackageName?В конце концов, пакет Zend_Form
также имеет класс Zend_Form
.