GlobalContainer.RegisterType<TMyImplementation>.Implements<IMyInterface>;
通过GlobalContainer
或ServiceLocator
获取实例,两者都有效:
MyInstance := GlobalContainer.Resolve<IMyInterface>;
MyInstance := ServiceLocator.GetService<IMyInterface>;
答案 0 :(得分:6)
ServiceLocator
用于在需要时解析代码中的依赖项。在那里你不想使用对容器的引用,因为这完全违背了丢失耦合代码的目的。
就我个人而言,我同意那些说服务定位器本身是一种反模式的人,应尽可能通过注入所有可能的东西来避免。