Magento is a newish (past 5 years) PHP based Ecommerce system with an architecture that's similar to the Java Spring framework (or so I've been told)
One of the features of the Framework is certain classes are not directly instantiated. Rather than do something like
$model = new Mage_Foo_Model_Name();
you pass an identifier into a static method on a global application object
$model = Mage::getModel('foo/name');
and this instantiates the class for you.
One of the wins with this approach is getModel checks a global configuration system for the foo/name identifier, and instantiates the class name it finds in the configuration system. This allows you to change the behavior of a Model system wide with a single configuration change.
Is there a formal, Gang of Four or otherwise, name that describes this system/design pattern? The instantiation itself looks like a classic Factory pattern, but I'm specifically interested in the whole "override a class in the system via configuration" aspect. Is there a name/concept that covers this, or is it contained within the worldview of a Factory?