"Gang of Four" -Designmuster im Magento-Kern

10

In Magentos Kern werden einige sehr offensichtliche Muster verwendet, wie zum Beispiel:

  • Singleton
  • Registrierung
  • Ereignis / Beobachter
  • Fabrik
  • Model View Controller

Es gibt jedoch auch andere, die in Magento verwendet werden können, die mir nicht bekannt sind, z. B. Schauspieler, Dekorateur, Strategiemuster.

Gibt es eine Referenzliste zur Verwendung aller Mustertypen in Magento oder zur Implementierung in Modulen von Drittanbietern, die die integrierten Funktionen von Magento nicht unnötig replizieren?

philwinkle
quelle
1
Kurze Antwort: nein. Aber du hast MVC vergessen :-)
Fabian Blechschmidt
2
Tatsächlich gibt es eine Liste von Entwurfsmustern auf Stapelüberlauf (haben Sie den Link in meinen Lesezeichen :)) - stackoverflow.com/questions/5041473/magento-design-patterns
Sergei Guk
Upvote nur wegen dieses Links zurück zu SO.
Ben Lessani - Sonassi
Beeindruckend. Das war genau das, was ich suchte. Bitte als Antwort posten!
Philwinkle

Antworten:

12

Es gibt eine Liste von Entwurfsmustern, die in Magento on Stack Overflow verwendet werden

Aus dem Artikel:

Die offensichtlichen sind:

Fabrik:

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

Singleton:

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

Registrierung:

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

Helfer anzeigen:

Mage::helper('core');

Prototyp:

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

Objektpool:

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

Iterator:

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

Event / Listener:

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

BEARBEITEN

Aktiver Rekord

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

Null-Objekt

$collection->getFirstItem()

Lazy Loading - Sammlungen werden beim Iterieren geladen

Es gibt auch 5 Artikel im Ryan Street Blog über MVC, Front Controller, Factory, Singleton und Registry in Magento

Bearbeiten
Ich könnte hinzufügen, dass der Magento-Singleton eher ein Pseudo-Singleton ist. Es ist eine Kombination aus 'Factory', weil Mage :: getSingleton () eine Factory ist, und 'Registry', weil dies innerhalb der getSingleton()Methode aufgerufen wird

self::register($registryKey, self::getModel($modelClass, $arguments))
Sergei Guk
quelle
2
Ich könnte 'Active Record' hinzufügen ( $product->save(), $product->getName(), ...), 'Null - Objekt' ( $collection->getFirstItem()), 'Front - Controller', `Lazy Loading‘ (Sammlungen werden geladen , wenn iterativ)
Marius
@Marius zögern Sie nicht, die Antwort zu bearbeiten.
Philwinkle