Magento Core中的“四人帮”设计模式


10

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

  • 辛格尔顿
  • 登记处
  • 事件/观察者
  • 模型/视图/控制器

但是Magento中可能还有其他一些我不知道的东西,例如Actor,Decorator,Strategy模式。

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


1
简短的回答:不。但是您忘了MVC了:-)
Fabian Blechschmidt

2
实际上,Stack Overflow上有一个设计模式列表(在我的书签中有链接:)- stackoverflow.com/questions/5041473/magento-design-patterns
Sergei Guk

仅仅因为那个链接就回到了SO。
Ben Lessani-Sonassi

哇。那正是我想要的。请发表答案!
philwinkle

Answers:


12

有一个在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条关于MVC,Front Controller,Factory,Singleton和Magento中的Registry的文章

编辑
我可能会补充说,Magento的“单身”更多是伪单身。它是“工厂”的组合,因为Mage :: getSingleton()是工厂,而“注册表”是因为在getSingleton()方法内部称为

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

2
我可能会添加“活动记录”($product->save(),,$product->getName()...),“空对象”($collection->getFirstItem()),“前端控制器”,“延迟加载”(迭代时加载集合)
马吕斯

@Marius可以随意编辑答案。
philwinkle
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.