Patrones de diseño "Gang of Four" en Magento Core

10

Hay algunos patrones muy obvios en uso en el núcleo de Magento, como:

  • único
  • Registro
  • Evento / Observador
  • Fábrica
  • Modelo / Vista / Controlador

Pero hay otros que pueden estar en uso en Magento que no conozco, como Actor, Decorador, Patrones de estrategia.

¿Existe una lista de referencia del uso de todos los tipos de patrones en Magento o cómo implementarlos en módulos de terceros que no replican innecesariamente la funcionalidad incorporada de Magento?

philwinkle
fuente
1
Respuesta corta: no. Pero olvidaste MVC :-)
Fabian Blechschmidt
2
En realidad, hay una lista de patrones de diseño en Stack Overflow (tiene el enlace en mis marcadores :)) - stackoverflow.com/questions/5041473/magento-design-patterns
Sergei Guk
Vota solo por ese enlace de regreso a SO.
Ben Lessani - Sonassi
Guau. Eso era exactamente lo que estaba buscando. Por favor publique como respuesta!
philwinkle

Respuestas:

12

Hay una lista de patrones de diseño que se utilizan en Magento en Stack Overflow

Del artículo:

Los obvios son:

Fábrica:

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

Único:

$category = Mage::getSingleton('catalog/session');

Registro:

$currentCategory = Mage::registry('current_category');

Ayudante de vista:

Mage::helper('core');

Prototipo:

Mage:getModel('catalog/product')->getTypeInstance();

Grupo de objetos:

$id = Mage::objects()->save($object);
$object = Mage::objects($id);

Iterador:

Mage::getModel('catalog/product')->getCollection();

Evento / oyentes:

Mage::dispatchEvent('model_load_before', $params);

EDITAR

Registro activo

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

Objeto nulo

$collection->getFirstItem()

Carga diferida : las colecciones se cargan cuando se iteran

También hay 5 artículos en el blog de Ryan Street sobre MVC, Front Controller, Factory, Singleton y Registry en Magento

Editar
Podría agregar que el 'singleton' de Magento es más un pseudo-singleton. Es una combinación de 'Fábrica' porque Mage :: getSingleton () es una fábrica y 'Registro' porque dentro del getSingleton()método esto se llama

self::register($registryKey, self::getModel($modelClass, $arguments))
Sergei Guk
fuente
2
Debo añadir 'Active Record' ( $product->save(), $product->getName(), ...), 'Null objeto' ( $collection->getFirstItem()) 'controlador frontal', `Lazy carga'(colecciones se cargan al iterada)
Marius
@Marius no dudes en editar la respuesta.
philwinkle