我想了解什么是OOP中良好的旧依赖注入的替代方案。 假设我有以下应用程序(伪代码)如何在纯函数式编程中交换函数(例如用于测试)
app()
是应用程序启动的地方。它允许用户注册和列出用户帖子(不管)。这两个函数组成了几个其它功能(寄存器它一步一步,势在必行,而列表的帖子确实构成他们(至少这是我的理解复合函数)。
app()
registerUser(u)
validate(u)
persist(u)
callSaveToDB(u)
notify(u)
sendsEmail
listPosts(u)
postsToView(loadUserPosts(findUser(u)))
现在,我想测试这个东西(registerUser
和listPosts
),并希望有存根的功能,因此我不叫分贝等等 - 你知道,平常测试的东西 我知道这是可能传递函数的功能,例如
registerUser(validateFn, persistFn, notifyFn, u)
。
并将其部分应用,因此它看起来像registerUser(u)
关闭其他功能等等。但是这一切都需要在应用程序启动级别完成,因为它是在OOP(接线依赖和引导应用程序)。它看起来像手动这样做会需要很长的时间和吨的样板代码。有什么明显的我在那里失踪?有没有其他的方式呢?
编辑:
我看到IO有没有一个很好的例子。那么如果我的函数是由其他几个函数组成的,其中一个函数真的很重(就计算而言),我想交换它呢?
简单地说 - 我正在寻找FP的方式做DI的东西。
好吧,但我想在这种情况下并不重要。如果我想从其他几个building block中构建功能逻辑(他们可能不会做任何IO)呢? – veilsoen 2014-11-02 14:43:57
另外,我需要最终在某个时候调用db,所以这必须在某处处理 – veilsoen 2014-11-02 15:54:11
但是,它不以任何方式回答我的问题(或者我完全错过了您的观点) – veilsoen 2014-11-02 16:03:56