5

他们看起来如此相似。我可以在 GlobalContainer 中注册一些东西:

GlobalContainer.RegisterType<TMyImplementation>.Implements<IMyInterface>;

GlobalContainer并通过or获取一个实例ServiceLocator,它们都可以工作:

MyInstance := GlobalContainer.Resolve<IMyInterface>;
MyInstance := ServiceLocator.GetService<IMyInterface>;
4

1 回答 1

6

用于在需要时解决代码中的ServiceLocator依赖关系。在那里,您不想使用对容器的引用,因为这完全违背了丢失耦合代码的目的。

就我个人而言,我同意那些说服务定位器本身是一种反模式的人,应该尽可能地通过注入所有可能的东西来避免这种情况。

于 2013-02-07T09:52:26.943 回答