2010-11-12 23 views
5

我正在考慮創建一個接口並將其應用於某個名稱空間中的所有對象。是否使用空白接口設計不好?

我將使用它的場景:我想創建這些對象的通用處理程序,並且我想強制泛型參數只接受實現此特定接口的類型。

這是一個糟糕的設計,或者是空白的接口可以接受嗎?

+0

重複? http://stackoverflow.com/q/3162214/456188 – Crisfole 2010-11-12 22:16:04

+0

@Cpfohl:我的問題似乎與您鏈接到的非常相似。看起來這個問題似乎更加模糊(查看「查看次數」),並且在答覆中覆蓋得不是很好。 – Remus 2010-11-12 22:46:47

+0

不要告訴你你必須把它放下! :)我只是指出它的情況下,你從它得到任何額外的信息。 – Crisfole 2010-11-15 14:14:26

回答

2

你在說什麼就叫做Marker Interfaces

我過去成功地使用了這種技術,但是我會懷疑你放在你的泛型類上的人工限制是否真的有必要。如果是這樣,那麼這當然是一個快速和編譯檢查完成它的方法。

+0

所以*有*是它的名字......謝謝! – Remus 2010-11-12 22:43:02

1

我認爲他們沒有錯。他們的很多優勢在於與(生成的)部分類的組合。

0

爲什麼你創建這個接口,如果它是空白的?每個班級的內容是什麼?它們之間是否有的任何通用性?如果這個問題的答案是否定的,那麼爲什麼你要爲每個接口做一個接口?

如果你有一個很好的理由讓一個空白的界面,它可能是正常的。但仔細想想,看看你是否可以將任何東西放入元素之間通用的界面中。

+0

...同時,我不會爲了它而將更多的信息傳入界面。不太鬆散的定義和界面更好。您總是可以使用多個接口來實現額外的功能性義務 – deanvmc 2010-11-12 22:15:29

+0

我不會爲每個接口創建一個接口,只有一個接口覆蓋特定名稱空間內的所有對象。而且,我的問題的假設是,它們之間確實沒有共同之處。 – Remus 2010-11-12 22:17:47

1

我個人對界面的理解是它構成了一個或多個對象之間的公共契約。這個想法很簡單,你可以使用接口構建你的代碼而不用擔心實現。說了這是一個有趣的問題,因爲你在技術上試圖強制執行合同。我會說繼續。

0

沒有什麼...錯誤的使用空白界面,我想。只是,接口的一個要點是定義一組通用的功能,它的實現方式可能會有所不同。

它不會使編碼變得更容易,因爲您正在使用黑盒(object,有些人可能稱之爲)。老實說,如果我正在實施這樣一個開放式的架構,我只會去普通的舊版本object

1

不,這不是壞設計。對通用參數提供合理限制有助於維護代碼的安全性和可讀性。此外,您可以確定界面不會永遠保持空白。