2011-03-21 31 views
6

我看到的大多數示例(如果不是全部)都是執行某種計算和完成的函數。在這方面,FP閃耀。但是,我很難看到如何將它應用於沒有太多算法和大量數據傳輸和服務的企業應用程序環境中。瞭解企業應用程序上下文中的FP(在Scala中)

所以我想問如何在FP風格中實現以下問題。

我想實現一個事件總線服務。該服務有一個register方法用於註冊偵聽器,publish用於發佈事件。

在OO設置中,通過使用兩種方法創建EventBus接口來完成此操作。然後,實現可以使用列表來保存更新register並在publish中使用的偵聽器。當然這意味着register有副作用。 Spring可以用來創建類並將其實例傳遞給發佈者或事件的訂閱者。

鑑於事件總線服務的客戶是獨立的(例如,並非所有客戶都是在「測試」方法中創建的),如何在FP中建模?據我可以看到,這抵消了註冊返回EventBus的新實例,因爲其他客戶端已經持有對舊實例的引用(並且例如,發佈到它將只發布給它知道的聽衆)

I更喜歡解決方案在斯卡拉。

回答

0

解決方案的草圖是發佈應返回IO[Unit]。聽衆應該迭代。註冊也會返回IO[Unit]

4

我想你應該仔細看看功能性反應式編程技術。既然你想要Scala中的東西,我建議你閱讀Ingo Maier,Tiark Rompf和Martin Odersky的論文Deprecating The observer pattern

+0

我知道這篇論文,並且實際上發展了一些其精神。它仍然使用副作用來註冊聽衆 – IttayD 2011-03-22 04:16:41