使用依赖注入决定在运行时创建哪个实现

时间:2009-08-25 22:51:19

标签: dependency-injection

我正在编写一个桌面GIS应用程序,它支持MapXtreme,MS Virtual Earth和我们的自定义地图引擎。应用程序的用户可以通过从dropdownlist中选择来在运行时更改地图引擎。我有一个Factory类来更改地图引擎像这样。

public class MapFactory implements IMapFactory
{
    public IMapEngine createInstance(MapType type)
    {
       if(type==MapType.MapXtreme)
          return new MapXtremeEngine();
       else if(type==MapType.VirtualEarth)
          return new VirtualEarth();
       //....other code
    }
}

我可以使用依赖注入框架在运行时通过类型参数创建合适的MapEngine实现吗?

1 个答案:

答案 0 :(得分:2)

您的示例是有条件地实例化对象的完全正确的模式。您需要创建实例的任何地方,在构造函数中接受IMapFactory

DI框架应该做的最多就是分发IMapFactory实例。