资讯专栏INFORMATION COLUMN

什么是依赖注入?你可能天天都在用

XFLY / 2913人阅读

摘要:假如你老板叫你做一件事。你说可以,但是我需要一些工具。老板你要的工具我后面会提供给你,现在你马上写个计划。

假如你老板叫你做一件事(doWork)。

你说:可以,但是我需要一些工具(tool1, tool2)。

老板:你要的工具我后面会提供给你,现在你马上写个计划。

然后,你就可以这样写:

function doWork(tool1, tool2){
  // 现在你有可用的 `tool1, 2` 啦
  // 比如,它们可能都是函数:
  tool1();
  tool2();
  console.log("Completed!");
}

但是现在你还不能开始做事(doWork()),因为你都没有 tool1tool2. 你需要老板为你提供这些工具,老板是这样的:

const boss = {
  tool1: function(){console.log("Using Tool 1...");},
  tool2: function(){console.log("Using Tool 2...");},
  provide: function(doWork){
    return () => doWork(this.tool1, this.tool2);
  }
}

现在,万事俱备:

// 注入依赖:
const doWorkWithTools = boss.provide(doWork);

// 现在你的 `doWork` 已经拥有 `tool1, 2` 啦:
doWorkWithTools();

依赖注入的模式都是类似这样的,就是定义一个函数实现你的功能,把你所需要的依赖定义成这个函数的参数。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89485.html

相关文章

  • 【极致】一个 jar 包的自我修养

    摘要:提升自己,方便他人。其实一份文档,说到底是为自己减轻工作量。总结总结起来,我们在提供一个通用包的时候,应该考虑以下七个点文档。支持的类反射获取参数名面向接口编程。一个注解,快速整合 声明:本文属原创文章,首发于公号程序员自学之道,转载请注明出处 遇到槽点 开发实践中,对于开发一个 jar 包,很多人都只是完成功能,只要功能使用没问题,就算是完事了,但其实远远不够。当用户使用 jar 包...

    pumpkin9 评论0 收藏0
  • PHP 项目中单独使用 Laravel Eloquent 查询语句来避免 SQL 注入

    摘要:是一个记录当前应用所受威胁情况的项目。怎么做呢用参数化查询对数据格式化,并使查询语句与数据分离。使用参数化查询,可以确保程序远离注入风险。例子如下除此之外,还有一种安全的做法,就是在项目中使用对象关系映射或者是查询构造器。 showImg(https://segmentfault.com/img/remote/1460000018641613?w=1680&h=859); OWASP ...

    dayday_up 评论0 收藏0
  • 与vim的一段往事

    摘要:而函数跳转的那个问题也类似,一直也没有找到一个完美的解决方案。尝到甜头之后,开始尝试把公司的项目往上面迁,结果开发效率有了极大的提升,而更关键的是写代码变成了一件愉快的事情。 这就要从大学里面学c语言说起了,那个时候我们还在用古老的 visual c++ 6.0(满满的回忆有木有……),不过我唯一的印象只剩下了,嗯,这个东西真的很丑很难用,不过还好,不久就有了 visual studi...

    syoya 评论0 收藏0

发表评论

0条评论

XFLY

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<