Шаблоны проектирования, используемые в CakePHP
Мой вопрос:
Какие хорошие примеры шаблонов проектирования используются в CakePHP?
Зачем использовать CakePHP как мой контекст
Я использую CakePHP около года, поэтому считаю, что мне легче думать в этом контексте. CakePHP также богат использованием шаблонов шаблонов (я уверен в этом) - я просто не знаю, какие шаблоны используются, кроме нескольких очевидных.
Примеры книг, которые я читал по теме:
Я читаю следующие книги, которые все охватывают шаблоны дизайна в той или иной степени; к сожалению, они в основном используют примеры кода на Java и С++, что затрудняет мне контроль над шаблонами проектирования на практическом уровне (я разработчик PHP, поэтому мне трудно его поглотить):
" Шаблоны архитектуры корпоративных приложений", Мартин Фаулер
" Head First Design Patterns", "Банда четырех" (Эрик Фриман, Элизабет Фримен, Кэти Сьерра и Берт Бейтс) (2004)
" Шаблоны проектирования: элементы Resuable объектно-ориентированного программного обеспечения "), Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес)
Примеры шаблонов, которые я могу наблюдать в CakePHP
-Я предполагаю, что в файле конфигурации используется нечто похожее на шаблон factory
-maybe $this- > params использует что-то, связанное с шаблоном наблюдателя? Я не уверен в этом...
-MVC (очевидно, так как Cake PHP использует структуру файлов MVC)
-ORM (еще один очень очевидный)
-Может ли HTML-помощник использовать шаблон декоратора?
Резюме
Я не ожидаю, что кто-нибудь спустится по линии и определит все шаблоны, используемые в CakePHP - я просто ищу несколько примеров шаблонов дизайна, которые должны быть очевидны, что мне не хватает.
Ответы
Ответ 1
Тот, который приходит на ум, представляет собой концепцию mixins. Не совсем шаблон, но на самом деле языковая функция, доступная на некоторых языках (т.е. Модули в Ruby), но не в других (например, Java). Он будет поступать на PHP, когда 5.4 стабилизируется, и мы получаем traits, но поведение модели CakePHP - хороший пример имитации такого рода множественных наследование, где это обычно невозможно.
class Post extends AppModel { // we can only inherit from one class
public $actsAs = array('This', 'That', 'Other'); // but we can do this instead
}
Ответ 2
Шаблоны разработки программного обеспечения (например, RoR):
-
Конфликтная конфигурация: все файлы конфигурации из Конфигурации
-
Model-View-Controller: папки: модель, контроллер, просмотр и т.д.
-
ActiveRecord, сопоставление данных ассоциации: сопоставление базы данных
-
Front Controller: главная точка входа (index.php)
Найдено в комментариях:
Шаблоны создания:
-
Синглтон - найти по "getInstance, singleton"
-
Factory - найти по "factory"
-
Builder - найти по "строителю"
Структурные шаблоны:
Поведенческие модели:
- Стратегия - найти по "стратегии"
Вид:
- Двухэтапный шаблон - "двухэтапный просмотр"