Modèles de conception «Gang of Four» dans Magento Core


10

Il existe quelques modèles très évidents en usage dans le cœur de Magento, tels que:

  • Singleton
  • Enregistrement
  • Événement / Observateur
  • Usine
  • Modèle Vue Contrôleur

Mais il y en a d'autres qui peuvent être utilisés dans Magento que je ne connais pas, comme l'acteur, le décorateur, les modèles de stratégie.

Existe-t-il une liste de référence de l'utilisation de tous les types de modèles dans Magento ou comment l'implémenter dans des modules tiers qui ne répliquent pas inutilement les fonctionnalités intégrées de Magento?


1
Réponse courte: non. Mais vous avez oublié MVC :-)
Fabian Blechschmidt

2
En fait, il y a une liste de modèles de conception sur Stack Overflow (avoir le lien dans mes signets :)) - stackoverflow.com/questions/5041473/magento-design-patterns
Sergei Guk

Upvote juste à cause de ce lien vers SO.
Ben Lessani - Sonassi

Sensationnel. C'était exactement ce que je cherchais. Veuillez poster comme réponse!
philwinkle

Réponses:


12

Il existe une liste de modèles de conception utilisés dans Magento sur Stack Overflow

De l'article:

Les plus évidents sont:

Usine:

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

Singleton:

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

Enregistrement:

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

Afficher l'aide:

Mage::helper('core');

Prototype:

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

Pool d'objets:

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

Itérateur:

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

Événement / Auditeurs:

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

ÉDITER

Enregistrement actif

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

Objet nul

$collection->getFirstItem()

Chargement différé - les collections sont chargées lorsqu'elles sont itérées

Il y a aussi 5 articles sur le blog de Ryan Street sur MVC, Front Controller, Factory, Singleton et Registry dans Magento

Edit
Je pourrais ajouter que le 'singleton' de Magento est plus un pseudo-singleton. C'est une combinaison de 'Factory' car Mage :: getSingleton () est une fabrique et 'Registry' car à l'intérieur de la getSingleton()méthode, cela s'appelle

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

2
Je pourrais ajouter 'Active Record' ( $product->save(), $product->getName(), ...), 'objet nul' ( $collection->getFirstItem()), 'contrôleur avant', `chargement Lazy » (collections sont chargés au itérée)
Marius

@Marius, n'hésitez pas à modifier la réponse.
philwinkle
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.