2012-11-05 31 views
1

我注意到我需要向父類和父類等添加依賴項的場合,這只是因爲子類需要它。這是代碼味道嗎?父級僅僅因爲孩子需要信息才需要信息是否合理?僅僅因爲另一個[child]依賴需要它而添加依賴關係 - 設計Smell?

特別是在我們[DDDDD]的DDD味道中,這似乎與應用服務(域邊界)需要來自應用層的信息傳遞到域服務。當一個域服務需要一個新的依賴關係時,向調用特定域服務的應用服務和所有相關測試添加依賴關係是相當痛苦的。

回答

2

是的,這是一種氣味。如果您的子類需要一些依賴項,那麼直接將依賴項注入到子類中。並讓父母知道(即依賴)只關於孩子。

BTW你確定在你的情況下依賴關係被傳遞給域服務嗎? 依賴關係是依賴對象完成其功能所需的特定服務。它看起來像在你的情況下,簡單的數據被傳遞給域服務。

2

是的,它是一種設計氣味,你的類型應該只取最小的依賴關係。如果他們需要一個需要其他依賴的服務,那麼這些依賴應該被注入到服務中,而不是使用該服務的類型。

如果您使用的是IoC容器,它將爲您處理這些依賴關係鏈。如果你需要在運行時實例化一個類型的新實例,那麼你應該注入工廠類型。

相關問題