Шаблоны дизайна "Банды четырех" в ядре Magento


В ядре Magento используется несколько очень очевидных шаблонов, таких как:

  • Синглтон
  • Реестр
  • Событие/наблюдатель
  • Фабрика
  • Модель/Представление/Контроллер

Но есть и другие, которые могут использоваться в Magento, о которых я не знаю, такие как Актер, Декоратор, Шаблоны стратегий.

Есть ли список ссылок на использование всех типов шаблонов в Magento или как реализовать в сторонних модулях, которые без необходимости не копируют встроенные функции Magento?

Author: philwinkle, 2013-05-13

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))
 12
Author: Sergei Guk, 2017-05-23 12:37:13