10
在依賴注入中,我們針對抽象進行編程。避免違反重用抽象原則
根據我的經驗,我可以說應用程序中的大多數抽象與他們的實現有1:1的關係。這違反了重用抽象原則。
馬克·西曼在他的一些帖子,我們可以有抽象空對象執行情況,以便建議避免RAP衝突(這從馬克西曼的建議可能是我的推斷。請糾正我,如果我錯了引用馬克在這)。我的問題在於。
- 如何做空對象實現?
- 可以違反RAP嗎?
在依賴注入中,我們針對抽象進行編程。避免違反重用抽象原則
根據我的經驗,我可以說應用程序中的大多數抽象與他們的實現有1:1的關係。這違反了重用抽象原則。
馬克·西曼在他的一些帖子,我們可以有抽象空對象執行情況,以便建議避免RAP衝突(這從馬克西曼的建議可能是我的推斷。請糾正我,如果我錯了引用馬克在這)。我的問題在於。
我個人覺得它有用來劃去的抽象即使有是只有一個生產實施。特別是:
你要知道,這是一個虛假陳述入手:
在依賴注入,我們對編程抽象。
您可以非常容易地使用具體類的依賴注入。有沒有什麼可以說你有爲你的依賴創建接口。依賴注入更多的是關於你的類如何獲得的依賴關係,而不是它用來表示它們的抽象級別。
所以基本上:
List<T>
的實例 - 例如,您不需要爲了測試目的而將您的類與List<T>
的行爲隔離開來。
測試! 98%的測試是讓我在課堂上抽象出的東西。而嘲笑/假人確保至少有兩個「實現」。儘管如此,仍然感到很奇怪我不明白你關於「互動」的最後一點。什麼是互動,什麼是互動? – stmax
+1測試也是實現計數的兩倍 –
@stmax:我意識到我沒有解釋得非常好 - 很難指出差異。如果感覺像一些描述(包括文件系統等)的* service *,那麼感覺就像一個交互。如果它只是一個「沒有複雜行爲的數據容器」,我們需要忽略測試(例如集合),那麼通常不需要注入它。 –