Modelli di design "Gang of Four" in Magento Core


10

Ci sono alcuni schemi molto evidenti in uso nel core di Magento, come:

  • Singleton
  • Registro
  • Evento / Observer
  • Fabbrica
  • Modello / Vista / regolatore

Ma ce ne sono altri che potrebbero essere in uso in Magento di cui non sono a conoscenza, come attori, decoratori, schemi strategici.

Esiste un elenco di riferimento sull'utilizzo di tutti i tipi di pattern in Magento o su come implementarlo in moduli di terze parti che non replicano inutilmente le funzionalità integrate di Magento?


1
Risposta breve: no. Ma hai dimenticato MVC :-)
Fabian Blechschmidt,

2
In realtà c'è un elenco di modelli di progettazione su Stack Overflow (ho il link nei miei segnalibri :)) - stackoverflow.com/questions/5041473/magento-design-patterns
Sergei Guk

Esegui l'upgrade solo a causa di quel link a SO.
Ben Lessani - Sonassi,

Wow. Era esattamente quello che stavo cercando. Si prega di inviare come risposta!
Filwinkle,

Risposte:


12

C'è un elenco di modelli di progettazione che vengono utilizzati in Magento su Stack Overflow

Dall'articolo:

Quelli ovvi sono:

Fabbrica:

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

Singleton:

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

Registro di sistema:

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

Visualizza aiutante:

Mage::helper('core');

Prototipo:

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

Pool di oggetti:

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

Iterator:

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

Evento / ascoltatori:

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

MODIFICARE

Record attivo

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

Oggetto nullo

$collection->getFirstItem()

Caricamento lento : le raccolte vengono caricate quando ripetute

Ci sono anche 5 articoli sul blog di Ryan Street su MVC, Front Controller, Factory, Singleton e Registry in Magento

Modifica
Potrei aggiungere che il "singleton" di Magento è più uno pseudo-singleton. È una combinazione di 'Factory' perché Mage :: getSingleton () è una factory e 'Registry' perché all'interno del getSingleton()metodo si chiama

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

2
Mi permetto di aggiungere 'record attivo' ( $product->save(), $product->getName(), ...), 'Null oggetto' ( $collection->getFirstItem()), 'controllore Front', `pigro carico'(collezioni vengono caricati quando iterata)
Marius

@Marius sentiti libero di modificare la risposta.
Filwinkle
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.