2008-11-03 88 views
2

場景:刪除依賴關係的技巧?

一種事件在需要由一個方法類B.處理類A(當前通過委託)

,但未通過事件傳遞的數據提出到方法目前包裹在類C.
這顯然需要B類依賴於類C.

是否有任何技術/重構,我可以爲了重新執行移動這個依賴關係?
例如將數據展開回簡單的原始數據類型並直接傳遞它們。

回答

5

展開來元的工作,但可以肯定,你真的要刪除這種依賴性。如果C是它們之間的橋樑,或者如果C提供它們兩者,則對於類別A和B完全有效的依賴於C.

展開到基元會移除編譯依賴但不是數據依賴,並且可能實際上是通過去除邏輯上需要的實體(C類)來「去規範化」設計

-2

你可以序列化到XML,而且比直接通過XPATH讀取XML(不含反序列化)

2

我同意Steven Lowe;依賴關係可能是有效的。我可以提供的唯一選擇是依靠接口而不是實際的類,但它幾乎歸結爲同樣的事情。

+0

總是編碼到接口,取決於接口而不是實際的實現提高了整體的靈活性和可測試性。 – Tigraine 2008-11-03 15:16:53

0

正如大多數人所說的,對C的依賴可能是有效的。

但是,如果依賴於C給出了問題,那可能是因爲C太複雜或者自己擁有太多的依賴關係。

如果在事件中傳遞類C,它應該可能是一個POCO類,它不依賴於它自己,所以您可能需要考慮重構該類。

如果C已合併了自己的方法,這是一個不錯的選擇,他們實際上屬於對A類

0

你看着依賴注入框架,如Structuremap至少集中這些依賴關係,讓他們配置?我沒有嘗試過使用事件/委託類型,但是如果您在圖層周圍傳遞了很多自定義類型/接口,它是一個很棒的工具。