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

07-24 09:26