Шаблони дизайну «Банда з чотирьох» у Magento Core


10

У ядрі Magento є кілька дуже очевидних моделей, таких як:

  • Сінглтон
  • Реєстр
  • Подія / спостерігач
  • Заводська
  • Модель / Вид / Контролер

Але є й інші, які можуть бути використані в Magento, про які я не знаю, такі як акторські, декораторські, стратегічні моделі.

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


1
Коротка відповідь: ні. Але ви забули MVC :-)
Fabian Blechschmidt

2
Насправді є перелік моделей дизайну на Stack Overflow (мати посилання у моїх закладках :)) - stackoverflow.com/questions/5041473/magento-design-patterns
Сергій Гук

Оновити саме через це посилання на SO.
Бен Лессані - Сонассі

Ого. Це було саме те , що я шукав. Будь ласка, опублікуйте як відповідь!
philwinkle

Відповіді:


12

Існує перелік моделей дизайну, які використовуються в Magento в режимі Stack Overflow

Зі статті:

Очевидними є:

Завод:

$product = Mage::getModel('catalog/product');

Singleton:

$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);

EDIT

Активний запис

$product->save()
$product->getName()

Нульовий об’єкт

$collection->getFirstItem()

Ледаче завантаження - колекції завантажуються під час ітерації

У блозі Ryan Street також є 5 статей про MVC, передній контролер, фабрику, синглтон та реєстр у Магенто

Редагувати
Можу додати, що "синглтон" Magento - це більше псевдо-синглтон. Це комбінація "Фабрика", тому що Mage :: getSingleton () - це завод і "Реєстр", оскільки всередині getSingleton()методу це називається

self::register($registryKey, self::getModel($modelClass, $arguments))

2
Я міг би додати 'Активної записи' ( $product->save(), $product->getName(), ...), 'Null об'єкт' ( $collection->getFirstItem()) 'Front контролер', `Ледачих завантажень» (збірники завантажуються при ітерованих)
Marius

@Marius сміливо редагуйте відповідь.
philwinkle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.