你的位置:首页 > 软件开发 > ASP.net > [翻译] 服务定位器是反模式

[翻译] 服务定位器是反模式

发布时间:2016-01-17 01:00:06
原文:Service Locator is an Anti-Pattern服务定位器模式广为人知,Martin Fowler在文章中专门描述过它。所以它一定是好的,对不对?并不是这样。服务定位器实际上是个反模式,应该避免使用。我们来研究一下。简单来讲,服务定位器隐藏了类之间的依赖 ...

原文:Service Locator is an Anti-Pattern

服务定位器模式广为人知,Martin Fowler在文章中专门描述过它。所以它一定是好的,对不对?

并不是这样。服务定位器实际上是个反模式,应该避免使用。我们来研究一下。简单来讲,服务定位器隐藏了类之间的依赖关系,导致错误从编译时推迟到了运行时,并且,在引入破坏性更改时,这个模式导致代码不清晰,增加了维护难度。

OrderProcessor 示例

我们用依赖注入话题中常见的OrderProcessor示例作说明。OrderProcessor 处理订单的过程是:先验证,通过后再发货。下面的代码使用静态的服务定位器:

public class OrderProcessor : IOrderProcessor{  public void Process(Order order)  {    var validator = Locator.Resolve<IOrderValidator>();    if (validator.Validate(order))    {      var shipper = Locator.Resolve<IOrderShipper>();      shipper.Ship(order);    }  }}

原标题:[翻译] 服务定位器是反模式

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录