我有一種感覺,我已經知道答案的人將會給,但在這裏不用反正:我可以使現有(固定)類實現新的界面嗎?
說我正在寫一個新的類,我們稱之爲PooledQueue<T>
,在其中我要接受一個構造函數實現接口IResourcePool<T>
的參數。這裏的想法是,我可以使用任何底層的池對象,只要它給我的屬性/方法IResourcePool<T>
(你知道,接口背後的整個想法,對嗎?)。
但是,如果有已經可用的一類,它提供的IResourcePool<T>
所有功能,但它並不實現IResourcePool<T>
(我不能修改源代碼),有沒有辦法對我來說,強制執行?
我期望人們回答的是我應該爲現有的類實現必要的接口的包裝。但我只是喜歡能夠做到這一點:
// GetDataPool returns an object of type Pool<Data> that I can't modify
var q = new PooledQueue<Data>(GetDataPool());
,而不是這樣的:
var q = new PooledQueue<Data>(new PoolWrapper<Data>(GetDataPool()));
我想什麼,我覺得還是很有用的是,如果一個類的實現接口的可與類定義分開定義。一種精心設計的數據庫結構的排序方式 - 使用關聯錶鏈接實體與其他表的ID。那有意義嗎?
+1 - 特別喜歡用重載的構造函數的一部分。 – 2009-10-27 19:19:07