Magento的核心中有一些非常明显的模式,例如:

  • 辛格尔顿
  • 注册表
  • 事件/观察者
  • 工厂
  • 型号/视图/控制器

但是,在Magento中可能还使用其他人使用,例如演员,装饰者,策略模式。

是否存在Magento中所有模式类型的使用情况的参考列表,或者如何在不必不必要地复制Magento内置功能的第三方模块中实现?

有帮助吗?

解决方案

在堆栈溢出的Magento中使用的设计模式列表

从文章中:

显而易见的是:

工厂:

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

辛格尔顿:

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

注册表:

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

查看帮手:

Mage::helper('core');

原型:

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

对象池:

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

迭代器:

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

活动/听众:

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

编辑

主动记录

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

空对象

$collection->getFirstItem()

懒负荷 - 迭代时加载收集

也有 Ryan Street博客上的5篇文章 关于Magento的MVC,前控制器,工厂,Singleton和注册表

编辑
我可能会补充说,洋红色的“辛格尔顿”更像是伪辛格尔顿。这是“工厂”的组合,因为Mage :: getsingleton()是工厂和“注册表” getSingleton() 方法称为

self::register($registryKey, self::getModel($modelClass, $arguments))
许可以下: CC-BY-SA归因
scroll top