我正在考慮編程接口而不是具體的類,但我有一個疑問:任何接口方法應該能夠保存對具體類的引用嗎?引用具體類作爲參數的接口方法會導致耦合?
假設以下情況:
1)
public interface AbsType1 {
public boolean method1(int a); // it's ok, only primitive types here
}
2)
public interface AbsType2 {
public boolean method2(MyClass a); // I think I have some coupling here
}
我應該在這裏選擇不同的設計,以避免後者?例如
public interface MyInterface {} // yes, this is empty
public classe MyClass implements MyInterface {
// basically identical to the previous "MyClass"
}
public interface AbsType2 {
public boolean method2(MyInterface a); // this is better (as long as the
// interface is really stable)
}
但還是有些東西不能說服我......我覺得不自在地聲明一個空的界面,儘管我看到別人這樣做。 也許和抽象類在這裏會更好?
我有點困惑。
編輯:
好吧,我會盡量通過做一個例子更具體。比方說,我desining一個詢盤,我當然要對項目添加到購物車:
public interface ShopCart {
public void addArticle(Article a);
}
現在,如果文章是一個具體的類,如果其實現隨時間的變化?這就是爲什麼我可以考慮將它作爲一個接口,但是再一次說,它可能不適合至少在語義層面上,因爲接口應該指定行爲,而Article沒有(或者幾乎沒有......)我想這是一種實體類)。
因此,我現在可能會得出這樣的結論:在這種情況下將Article作爲一個抽象類將是最好的事情......您怎麼看待它?
我可以看到事情還行 –
爲什麼你聲明你的接口是空的? AbsType'關心的'MyClass'中沒有任何相關的公共方法嗎? - 如果沒有,那麼也許你最好使用類的泛型。 – JimmyB