2011-04-17 41 views
1

你會如何建議實施以下方案。我有幾個想法,但沒有一個能夠完全滿足我的問題,所以我想獲得您的意見。如何在Java中公開動態的方法調用列表?

我正在構建一種工作流程應用程序。用戶創建了需要執行的活動流水線。我面臨的問題是這樣的。流水線中的每個「小部件」必須定義它可以接受的輸入以及它將作爲輸出產生的內容。它可以接收任意數量的輸入「流」,也可以產生多個輸出流。現在出現問題。這些需要動態的。例如,某人應該可以爲應用程序編寫一個插件,用於定義他自己的小部件,並提供輸入和輸出。但其他小部件需要能夠連接到它,以便它們可以將它們的輸出發送到新的小部件,或從其接收輸入。

我們應該如何首先展示可接受的輸入和輸出的列表,其次,我該如何計算在窗口小部件上調用哪個方法。例如,如果我想從我的小部件發送輸出到新的,我需要能夠計算如果有一個可接受的接收方法(在這種情況下可能有多個),其次,我需要知道調用數據的方法。

我已經看過閉包,代表等,這似乎能夠做我需要的東西。只是想我會先獲得更多的信息。

謝謝。

回答

2

我建議您強制執行,所有組件都實現一個或多個接口,以允許其他組件和框架使用這些接口來詢問組件可以發送的內容以及可以接收的內容。

這將使您的代碼更健壯,並且需要更少的魔法才能工作。

+0

您如何看待以下內容?我認爲我會做的,是與任何第三方簽訂合同,並且要求他們返回我定義的Wrapper類的集合。這個包裝器基本上包含了一些元數據,包括它公開的方法名稱和參數。然後我可以通過反射來訪問它。 – 2011-04-18 07:13:19

+0

請勿使用反射。改用接口。 – 2011-04-18 07:23:18

+0

有什麼理由不使用反射?這很簡單。而且這些電話很少發生,所以表演不應該成爲問題。或者我錯過了什麼? – 2011-04-18 09:11:56

1

看看消息驅動架構和Mule ESB。