Pattern: Decorator
Сколько раз обещаю себе больше не писать на PHP, и всеравно пишу. Вот и недавно разродился небольшим классом реализующим шаблон декоратор.
Читать далее...Сколько раз обещаю себе больше не писать на PHP, и всеравно пишу. Вот и недавно разродился небольшим классом реализующим шаблон декоратор.
Читать далее...Шаблон проектирования Singleton (одиночка) используется для того чтобы класс можно было создать только один раз. На практике он применяется вместе с другим шаблонами проектирования такими как pattern Registry и pattern ServiceLocator
Читать далее...![]() |
Статья Pattern: Registry имеет непосредственно отношение к этой статье, советую ознакомиться перед прочтением. |
|---|
Паттерн ServiceLocator изначально спроектирован для Java и дает возможность находить сервисы, зная их имя. В Java для того чтоб найти Enterprise JavaBeans (EJB) или Java Message Service (JMS) нужно использовать JNDI API. Это накладывает на код некоторые ограничения, например операции поиска и создания компонентов служб могут быть сложными (ресурсоемкими) и могут использоваться периодически в различных клиентах приложения. Для этого ввели паттерн, который позволяет абстрагироваться от использования JNDI и скрытия сложностей создания исходного контекста, а также может повторно использоваться несколькими клиентами.
Читать далее...![]() |
Подробное описание работы класса смотрите в предыдущей статье CORE. |
|---|
![]() |
Возможно вам будет интересна статья ServiceLocator, она имеет непосредственное отношение к этой статье. |
|---|
Решил обновить класс, но очень не хотел переписывать прошлую статью, она мне дорога как память :). Поэтому решил еще раз опубликовать свежий класс. Напомню или расскажу для тех, кто не заметил сверху ссылки на предыдущую версию, что класс реализует паттерн Registry. То есть это Singleton класс, имеющий в себе ссылки на все основные ресурсы сайта. Например, удобно получать ссылку на объект для работы с базой данных с помощью выражения Registry::extract('db') не заботясь о том где, как и когда он был создан.
Читать далее...Некоторые рассуждения о шаблоне проектирования Factory, а так же примеры реализации в "домашних" условиях наиболее универсального метода.
Читать далее...![]() |
Эта статья является демонстрацией примера приведенного в статье Registry |
|---|
![]() |
У этой статьи есть продолжение Pattern: Registry |
|---|
Как и было условлено ранее, класс должен реализовывать паттерн Singleton, чтобы исключить возможность создания его копии.
Читать далее...![]() |
Это теоритическая часть, практическую можно найти на странице CORE |
|---|
Ну я думаю стоит начать из далека... когда еще деревья были большими а колбаса вкусной...
Нет это слишком рано ;) Начнем с того что паттерны в программировании были придуманы никак не для PHP, а для Smalltalk. Ну а к PHPони были притянуты "за уши", с появлением 5-ой версии.
Идея паттерна Registry состоит в том что проект (читай : сайт) содержит много разнообразных классов, например класс для работы с БД и шаблонизатор. А теперь появился класс User который должен работать с БД и передавать данные шаблонизатору. Значит он должен знать о функциях SELECT и ASSIGN двух других классов. Классы можно было бы наследовать и получить этот доступ но наследовать в PHP можно только один класс, да и если проект большой то стоит ли наследовать 150 разных классов?! Значит надо передавать экземпляры классов в функции которые их используют, или еще лучше в конструктор а там присвоить их свойствам. А зачем передавать(?!) можно сразу создать новый экземпляр прямо в конструкторе User'a, допустим, а если при создании конструкторам нужно передавать параметры? Или можно использовать паттерн Singleton для того чтобы не пересоздавать объект каждый раз но это не всегда удобно. Ну, а что если, например вы решите сменить шаблонизатор с XTemplate на Smarty и придется искать и реплейсить все названия класса.
Читать далее...
Свежие комментарии