2010-04-27 65 views
1

的Magento是一个新望(近5年)基于PHP的电子商务系统的架构是类似于Java Spring框架(或所以我一直在说)Magento类覆盖设计模式的正式名称?

一个框架的特点是某些类不直接实例化。而不是像做

$model = new Mage_Foo_Model_Name(); 

你传递一个全局应用程序对象

$model = Mage::getModel('foo/name'); 

上的标识为一个静态方法,这会将该类实例为您服务。

getModel通过此方法获得的一个胜利是为全局配置系统检查foo/name标识符,并实例化它在配置系统中找到的类名称。这使您可以通过单个配置更改来更改Model系统的行为。

是否有正式的四人帮或其他名称描述此系统/设计模式?实例本身看起来像一个典型的Factory模式,但我特别感兴趣的是整个“通过配置覆盖系统中的类”方面。是否有一个涵盖此的名称/概念,还是包含在工厂的世界观中?

回答

4

这看起来像工厂设计模式。


报价为Factory method pattern(重点煤矿)的维基百科条目

它与创建 对象(产品)的问题比不指定 确切类对象的,这将是创建了 。
工厂方法设计 图案处理此问题,通过 限定用于 一个单独的方法创建的对象,子类则 可以重写指定产品的 派生类型,这将是 创建。

和:

外的设计模式的范围, 术语工厂方法也可以指 的工厂,其主要目的 是对象创建的方法。


一对夫妇的其他相关链接:

+0

是的,类的实例化看起来像一个工厂,但我更感兴趣的是“允许人们通过。配置覆盖事物”方面。更新问题以更好地反映我的想法。 – 2010-04-27 18:51:25

1

听起来好像一个service locator

此模式使用称为“服务定位器”的中央注册表,该服务器定位器根据请求返回执行特定任务所需的信息。