了解企业应用程序上下文中的FP(在Scala中)

时间:2011-03-21 20:01:14

标签: scala functional-programming

我看到的大多数示例(如果不是全部)都是一种执行某种计算和完成的函数。在这方面,FP闪耀。但是,我很难看到如何在企业应用程序环境的上下文中应用它,在这种情况下,没有太多的算法进行,并且有大量的数据传输和服务。

所以我想问一下如何在FP风格中实现以下问题。

我想实现一个事件总线服务。该服务有一个register方法用于注册监听器,publish用于发布事件。

在OO设置中,这是通过使用两种方法创建EventBus接口来完成的。然后,实现可以使用列表来保存由register更新并在publish中使用的侦听器。当然这意味着register会产生副作用。 Spring可用于创建类并将其实例传递给事件的发布者或订阅者。

如果事件总线服务的客户端是独立的(例如,并非所有客户端都是以“test”方法创建的),如何在FP中对此进行建模?据我所知,这否定了使寄存器返回EventBus的新实例,因为其他客户端已经拥有对旧实例的引用(例如,发布到它只会发布给它知道的监听器)

我更喜欢在Scala中使用解决方案。

2 个答案:

答案 0 :(得分:4)

我认为你应该仔细研究功能反应式编程技术。由于你想要Scala中的东西,我建议阅读Ingo Maier,Tiark Rompf和Martin Odersky撰写的Deprecating The observer pattern论文。

答案 1 :(得分:0)

解决方案的草图是发布应返回IO[Unit]。听众应该是迭代者。注册也会返回IO[Unit]