Шаблоны дизайна "Банды четырех" в ядре Magento
В ядре Magento используется несколько очень очевидных шаблонов, таких как:
- Синглтон
- Реестр
- Событие/наблюдатель
- Фабрика
- Модель/Представление/Контроллер
Но есть и другие, которые могут использоваться в Magento, о которых я не знаю, такие как Актер, Декоратор, Шаблоны стратегий.
Есть ли список ссылок на использование всех типов шаблонов в Magento или как реализовать в сторонних модулях, которые без необходимости не копируют встроенные функции Magento?
1 answers
Существует список шаблонов проектирования, которые используются в Magento при переполнении стека
Из статьи:
Очевидными из них являются:
Фабрика:
$product = Mage::getModel('catalog/product');
Синглтон:
$category = Mage::getSingleton('catalog/session');
Реестр:
$currentCategory = Mage::registry('current_category');
Помощник по просмотру:
Mage::helper('core');
Прототип:
Mage:getModel('catalog/product')->getTypeInstance();
Пул объектов:
$id = Mage::objects()->save($object); $object = Mage::objects($id);
Итератор:
Mage::getModel('catalog/product')->getCollection();
Событие/Слушатели:
Mage::dispatchEvent('model_load_before', $params);
РЕДАКТИРОВАТЬ
Активная запись
$product->save() $product->getName()
Нулевой объект
$collection->getFirstItem()
Отложенная загрузка - коллекции загружаются при повторении
Также есть 5 статей в блоге Райан Стрит о MVC, фронт-контроллере, фабрике, Синглтоне и реестре в Magento
Редактировать
Я можно добавить, что "синглтон" Magento - это скорее псевдо-синглтон. Это комбинация "Фабрики", потому что Mage::getSingleton() является фабрикой, и "Реестра", потому что внутри метода getSingleton()
это называется
self::register($registryKey, self::getModel($modelClass, $arguments))