Шаблоны проектирования, используемые в 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 - найти по "строителю"

Структурные шаблоны:

  • Адаптер - найти по "адаптеру"

  • Фронтальный контроллер (.htaccess, include)

Поведенческие модели:

  • Стратегия - найти по "стратегии"

Вид:

  • Двухэтапный шаблон - "двухэтапный просмотр"