摘要:假如你老板叫你做一件事。你说可以,但是我需要一些工具。老板你要的工具我后面会提供给你,现在你马上写个计划。
假如你老板叫你做一件事(doWork)。
你说:可以,但是我需要一些工具(tool1, tool2)。
老板:你要的工具我后面会提供给你,现在你马上写个计划。
然后,你就可以这样写:
function doWork(tool1, tool2){ // 现在你有可用的 `tool1, 2` 啦 // 比如,它们可能都是函数: tool1(); tool2(); console.log("Completed!"); }
但是现在你还不能开始做事(doWork()),因为你都没有 tool1 和 tool2. 你需要老板为你提供这些工具,老板是这样的:
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 包...
摘要:是一个记录当前应用所受威胁情况的项目。怎么做呢用参数化查询对数据格式化,并使查询语句与数据分离。使用参数化查询,可以确保程序远离注入风险。例子如下除此之外,还有一种安全的做法,就是在项目中使用对象关系映射或者是查询构造器。 showImg(https://segmentfault.com/img/remote/1460000018641613?w=1680&h=859); OWASP ...
阅读 1278·2021-11-22 09:34
阅读 2142·2021-10-08 10:18
阅读 1700·2021-09-29 09:35
阅读 2423·2019-08-29 17:20
阅读 2110·2019-08-29 15:36
阅读 3370·2019-08-29 13:52
阅读 756·2019-08-29 12:29
阅读 1168·2019-08-28 18:10