有了IOC,我明白你可以通過編輯配置文件等來取代實現。IOC處於課堂級別,但數據庫衝突呢?
但是,當類與特定的數據庫表和sprocs結合時會發生什麼,你不能只是換掉一個實現,因爲類/實體綁定到特定的表和存儲過程。
我在這兒嗎?
有了IOC,我明白你可以通過編輯配置文件等來取代實現。IOC處於課堂級別,但數據庫衝突呢?
但是,當類與特定的數據庫表和sprocs結合時會發生什麼,你不能只是換掉一個實現,因爲類/實體綁定到特定的表和存儲過程。
我在這兒嗎?
當您將類A的實例注入到類B的實例中時,您是這麼做的:A滿足B可以依賴的協定,通常由接口指定(但也可以由類或超類)。如果B不滿足該合同,則行爲不明確。
所以這歸結爲:當你以這種方式進行交互時,你不應該關心表結構匹配與否。你應該關心接口是否正確。
另外,根據我的經驗,ORM意義上的這些OO實體並不傾向於被注入。通常注入發生在服務提供商。
什麼克萊說的話......
public class CustomerService //may implement extend from some base
{
public ICustomerDao customerDAO { get; set; } //the injected object
}
CustomerService
是您商務級別類(例如),您可以使用IoC容器依賴注入注入一些CustomerDao。您可以注入的內容由ICustomerDao
的合同定義。因此,所有實施的內容都將被允許在此注入。
您提到的這種替代能力被稱爲Liskov替代原則。 – Llyle 2009-09-05 20:20:25