2009-05-21 27 views
0

這種設計有很多的對象:接口和幾個實現,並且通過組合使用幾個對象。 例: 富實現的IFoo和有誰實現伊巴爾 富也有setBar(IBAR巴)dependancie的注射方法的酒吧對象。Sould setter for delegate在界面中?

我的問題是:二傳手sould't在界面? (用於測試,懲戒...我卡住了!)

回答

0

如果使用多態,即調用接口類型的setter,那麼很明顯你需要它的接口。

+0

是的,但正式developper不這樣做。我認爲明智的理由是明智的。 (在添加setter之前) – 2009-05-21 20:01:09

0

要麼注入酒吧使用setter注入到foo。在沒有Bar的情況下Foo不能存在的情況下,更適合用構造函數注入Bar。

進一步閱讀:Types of dependency injection

1

要具有與界面中的二傳手只是嘲笑和測試是不好的。因此,您允許該接口的用戶使用任意設置的組件,即使該對象的屬性在構建後可能不應該是可修改的。界面不應該揭示如何構建對象。