我正在编写一个桌面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实现吗?
答案 0 :(得分:2)
您的示例是有条件地实例化对象的完全正确的模式。您需要创建实例的任何地方,在构造函数中接受IMapFactory
。
DI框架应该做的最多就是分发IMapFactory
实例。