Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection 功能依赖注入_Dependency Injection_Functional Programming - Fatal编程技术网

Dependency injection 功能依赖注入

Dependency injection 功能依赖注入,dependency-injection,functional-programming,Dependency Injection,Functional Programming,在编写面向对象软件时,我经常使用依赖注入: 将高级功能与低级功能组合在一起:我的帐户管理服务使用存储库和验证服务,而不是自己实现它们 将组件与其依赖项隔离:我的帐户管理服务通过接口使用其依赖项,这样我就可以交换实现、模拟单元测试等等 函数式编程语言中存在哪些模式来实现这些目标 编辑:一位评论者正确地问:“传递函数怎么样?”。我认为下面关于函数分组的评论一针见血——服务是一个函数集合,具有一组共享的依赖项,我可以作为一个原子组来处理 在Clojure中,协议似乎很好地解决了这一问题,但我真的很

在编写面向对象软件时,我经常使用依赖注入:

  • 将高级功能与低级功能组合在一起:我的帐户管理服务使用存储库和验证服务,而不是自己实现它们

  • 将组件与其依赖项隔离:我的帐户管理服务通过接口使用其依赖项,这样我就可以交换实现、模拟单元测试等等

函数式编程语言中存在哪些模式来实现这些目标

编辑:一位评论者正确地问:“传递函数怎么样?”。我认为下面关于函数分组的评论一针见血——服务是一个函数集合,具有一组共享的依赖项,我可以作为一个原子组来处理


在Clojure中,协议似乎很好地解决了这一问题,但我真的很想知道如何更普遍地解决这个问题…

不久前,我读了一篇文章,描述了依赖注入如何在函数式编程中被视为一种常见现象。我认为这非常有趣,并且它为这个主题提供了一个很好的视角。

在小范围内,像curry和函数作为参数这样的东西减少了对模块依赖性的需求。在更大的范围内,像标准ML函子这样的东西在这方面非常有用。Racket有一个名为units的系统,在这方面也做得很好。

我开发了一个小库,我发现它在函数启发(JavaScript)环境中对DI很有帮助,它没什么特别的,只是我喜欢的一种方法。

你是说除了传递函数之外?为什么不能满足您的需求?@marcin Services不仅仅是功能。实际上,它们通常由许多具有协调(某种意义上)行为的函数组成。@CheatEx它们是函数(反过来可能由其他较小的函数组成)可能与@Mauricio重复。这对我来说并不明显。例如,让我们看看twitterapi。有很多方法,人们希望以某种常见的方式使用这些方法(例如,使用已经提供的身份验证)。问题:如何将所有不同的方法表示为一个函数?是的,可以传递一个符号,标识一个方法并得到一个表示该方法的函数,但这就是我们的OO方法(动态类型的BTW),不是吗?jacobm,我很好奇函子在更大范围内管理依赖关系时是如何有用的。你能给我们举个例子说明这是怎么回事吗?