Magento是一个新的(过去5年)基于PHP的电子商务系统,其体系结构与Java Spring框架相似(或者有人告诉我)
该框架的功能之一是某些类没有直接实例化。而不是做类似的事情
$model = new Mage_Foo_Model_Name();
您将标识符传递到全局应用程序对象的静态方法中
$model = Mage::getModel('foo/name');
这会为您实例化该类。
这种方法的优势之一是getModel会在全局配置系统中检查foo / name标识符,并实例化在配置系统中找到的类名。这使您可以通过一次配置更改来更改整个Model系统的行为。
是否有描述此系统/设计模式的正式的“四人一组”名称?实例化本身看起来像经典的Factory模式,但是我对整个“通过配置覆盖系统中的类”方面特别感兴趣。是否有名称/概念涵盖其中,或者包含在工厂的世界观中?
最佳答案
这看起来像工厂设计模式。
在Wikipedia条目中引用Factory method pattern(强调我的名字):
它处理创建的问题
对象(产品)未指定
对象的确切类别
创建。工厂方法设计
模式通过以下方式处理此问题
定义一个单独的方法
创建子类的对象
然后可以覆盖以指定
产品的派生类型
创建。
和:
在设计模式范围之外,
术语工厂方法也可以参考
到工厂的主要方法
目的是创建对象。
其他几个有趣的链接:
Factory (software concept)
Factory pattern