"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?


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.