2010-09-21 55 views
1

我有一個大的,肥胖和醜陋的傳統程序。我必須完成的一項任務是向項目A添加新課程。 B項目參考項目A,但我需要添加的功能取決於項目B中的類的方法。當然,我不能從一個參考B項目,因爲這將創建一個循環引用。在類似的情況,我的做法是創建的項目C.一個移動的依賴關係到它,並同時擁有一個參考它。解決循環引用,而不引入新項目

但是,對於這個特殊的任務,將需要移動這麼多的代碼,這將創建一個解決方案巨大的混亂。

現在,我傳遞一個object盒裝在需要類的實例,並使用反射來訪問我需要在運行時的方法。

是否有任何其他(更好)的方式來解決這個不用移動代碼項目C 2

+0

使用項目A中定義的單個方法的單個接口將會執行。 – leppie 2010-09-21 23:20:12

回答

3

創建其中包含您希望能夠在調用B工程的方法的方法簽名項目中定義的接口。在項目B的課堂上實現該接口。

所有剩下的事情就是爲B提供一種方式來告訴A「我在這裏!給我打電話!」。您可以通過在A中定義一個靜態方法來實現這一點,該方法將接口作爲參數並將其保存到項目A中的變量中.B可以調用該方法,傳遞實現該接口的類的實例。當A需要調用B時,它調用該註冊函數存儲的接口引用。

0

如果你有循環引用那麼很可能你有一些解決方案一個項目中吐盡到兩個項目,那麼你可以簡單合併他的代碼到一個項目,這第二個項目中刪除,那麼你就沒有引進新的項目。