我一直在使用 javscript 进行依赖注入,但有一些问题需要帮助
一个简单的例子是我有一个对话框模块,在页面上的多个地方使用,当用户与页面上的组件交互时,它会通过自定义消息提醒用户
function Dialog () {
}
Dialog.prototype.show = function () {
}
这可以用在一个组件中,比如一个验证用户搜索的搜索控件,如果它为空,它会触发一个错误对话框。使用依赖注入我假设我会写:
function searchComponent (dialog) {
this.dialog = dialog
}
searchComponent.prototype.validateSearch = function () {
// validate search if invalid create error
this.dialog.show();
}
var searchDialog = new Dialog();
var search = new searchComponent(searchDialog);
然而,用户可能永远不需要搜索错误对话框,但我正在创建它的一个实例,以便我可以传递依赖关系,如果我在页面上有 100 个单独的对话框实例,我会构造这 100 次吗?这在性能上是不必要且昂贵的。
我宁愿做的是将对话框的构造延迟加载到需要的时候
searchComponent.prototype.validateSearch = function () {
//validate search if invalid create error
var dialog = new Dialog();
dialog.show();
}
现在我知道这会造成不利影响,其中之一是它对单元测试的影响,我很想了解我是否错过了某些东西或替代方法?
提前致谢