它们看起来很相似。我可以在GlobalContainer中注册一些内容:
GlobalContainer.RegisterType<TMyImplementation>.Implements<IMyInterface>;
可以通过GlobalContainer
或ServiceLocator
获取实例,两者都可以使用:
MyInstance := GlobalContainer.Resolve<IMyInterface>;
MyInstance := ServiceLocator.GetService<IMyInterface>;
GlobalContainer
的Resolve
方法也是如此,它们之间有什么区别?“在那里,您不想使用对容器的引用”。所以,ServiceLocator
只是GlobalContainer
的一个包装器,以公开较少的方法?“我同意那些认为服务定位器本身就是反模式”的人--同样的理由,GlobalContainer
也是吗? - Rafael Piccolo