他们看起来很相似.我可以在GlobalContainer中注册一些东西:
GlobalContainer.RegisterType<TMyImplementation>.Implements<IMyInterface>;
Run Code Online (Sandbox Code Playgroud)
并通过GlobalContainer或获取实例ServiceLocator,它们都工作:
MyInstance := GlobalContainer.Resolve<IMyInterface>;
MyInstance := ServiceLocator.GetService<IMyInterface>;
Run Code Online (Sandbox Code Playgroud)
的ServiceLocator是在需要的时候在你的代码解析相关性.在那里你不想使用对容器的引用,因为这完全违背了丢失耦合代码的目的.
就个人而言,我同意那些说服务定位器本身就是反模式的人,应尽可能通过注入可能的一切来避免.
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |