Magento Core中的“四个团伙”设计模式
-
16-10-2019 - |
题
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))