Дизайн «банда из четырех» в Magento Core
-
16-10-2019 - |
Вопрос
Есть несколько очень очевидных моделей, используемых в ядре Magento, например:
- Синглтон
- Реестр
- Событие/наблюдатель
- Фабрика
- Модель/просмотр/контроллер
Но есть и другие, которые могут использоваться в Magento, о которых я не знаю, таких как актер, декоратор, стратегические узоры.
Существует ли ссылочный список использования всех типов шаблонов в Magento или как реализовать в сторонних модулях, которые не излишне повторяют встроенные функции Magento?
Решение
Существует список шаблонов дизайна, которые используются в 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 'Singleton'-скорее псевдо-синглтон. Это комбинация «фабрики», потому что Mage :: getsingleton () - это фабрика и «реестр», потому что внутри getSingleton()
метод, который называется
self::register($registryKey, self::getModel($modelClass, $arguments))