2009-09-05 53 views
0

有了IOC,我明白你可以通過編輯配置文件等來取代實現。IOC處於課堂級別,但數據庫衝突呢?

但是,當類與特定的數據庫表和sprocs結合時會發生什麼,你不能只是換掉一個實現,因爲類/實體綁定到特定的表和存儲過程。

我在這兒嗎?

回答

4

當您將類A的實例注入到類B的實例中時,您是這麼做的:A滿足B可以依賴的協定,通常由接口指定(但也可以由類或超類)。如果B不滿足該合同,則行爲不明確。

所以這歸結爲:當你以這種方式進行交互時,你不應該關心表結構匹配與否。你應該關心接口是否正確。

另外,根據我的經驗,ORM意義上的這些OO實體並不傾向於被注入。通常注入發生在服務提供商。

+0

您提到的這種替代能力被稱爲Liskov替代原則。 – Llyle 2009-09-05 20:20:25

1

什麼克萊說的話......

public class CustomerService //may implement extend from some base 
{ 
    public ICustomerDao customerDAO { get; set; } //the injected object 

} 

CustomerService是您商務級別類(例如),您可以使用IoC容器依賴注入注入一些CustomerDao。您可以注入的內容由ICustomerDao的合同定義。因此,所有實施的內容都將被允許在此注入。