首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖注入不可否认对象的优缺点

依赖注入不可否认对象的优缺点
EN

Stack Overflow用户
提问于 2011-03-13 08:50:55
回答 1查看 836关注 0票数 2

在您看来,在JavaScript中,依赖注入不可实例化对象的优缺点是什么?

您可能想了解的一些上下文是:

  • Unit-testing
    • 值得注射吗?毕竟,即使没有dep-injection.

,也可以将不可实例化的“静态”依赖重写为每个测试的假对象。

  • Refactoring
    • 是否会变得更难定位&重构不可实例化的dependency?

  • Readability
    • 哪个实现更容易跟踪?含蓄或明示对you?

很重要吗?

  • File-size

代码

不可实例化对象:

代码语言:javascript
复制
WindowFactory = {
  buildWindow: function() {
     return {};
  }
};

依赖-注入:

代码语言:javascript
复制
(House = function(windowFactory) {
  this.windowFactory = windowFactory;
}).prototype = {
  build: function() {
    var window = this.windowFactory.buildWindow();
  }
};

var house = new House(WindowFactory);

与非依赖注入变量:

代码语言:javascript
复制
(House = function() {
}).prototype = {
  build: function() {
    var window = WindowFactory.buildWindow();
  }
};

var house = new House();

上下文

我的主要目标是使上述代码具有可测试性。我已经养成了将可实例化依赖项(例如var window = new Window(); var house = new House(window);)外部化的习惯。当单元测试可实例化对象(例如House)时,这会有所帮助,因为与实际的依赖项(Window)不同,我可以使用假的(var fakeWindow = {}; var house = new House(fakeWindow);)实例化对象,而不必担心在测试对象时冗余地测试依赖项。(这种依赖注入形式在测试依赖于通过XHR、DOM-events、sessionStorage或cookie检索的数据的对象时也很有用。)

现在,当依赖关系本身是一个可实例化的对象时,好处是显而易见的;但是当依赖关系是一个不可实例化的对象(例如,上面代码中的WindowFactory )时,我再次考虑了它的有用性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-28 17:09:15

如果你在单元测试中获得了一些好处,那对我来说可能就足够了。您将能够在不依赖于全局/外部状态的情况下干净地测试该功能。然后,附加的好处变成可读性;在函数的参数中,可以清楚地显示您所依赖的全局状态/api。

能够在测试的设置/删除中更改静态方法是解决问题的方法之一,但我个人认为,这样做容易出错,而且是一项繁重的工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5288368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档