的跟進我previous question 經與結合的通用範圍,如函數:是否結合泛型邊界反模式?
<T extends Foo & Bar> void doStuff(T argument) {
//do stuff wich should only be done if arguments is both foo and bar
}
因爲這不是從一個不明物體澆注料,你需要有這實際上實現這些接口的一些對象的知識。在我看來,需要知道傳遞給doStuff(T a)
的對象參數的具體類型是違反德米特定律的。
功能不指定需要知道實際的類(可能有許多不同的),我真的不想知道它知道這個類增加了我的代碼庫的依賴。
正在使用這些邊界反模式?如果是的話,最好怎麼避免呢?
案例情況涉及指定對象的一個接口是持久性的,而另一個指定對象具有相關實體。在這種情況下,doStuff(T a)
函數在相關實體持續存在時持久化。但非持久實體也可以有相關的實體,但不應該由doStuff(T a)
函數處理
這個問題似乎涉及到[投地結合的通用(http://stackoverflow.com/questions/318208/cast-to-combined-generic)問題(由同一作者)。 – 2008-11-26 11:26:20
它是,但我認爲這將是更好的清晰度,使之成爲一個不同的問題 – pvgoddijn 2008-11-26 13:09:25
嗯,你知道有關它的一切很明顯,我只是在想其他人誰可能需要更多的背景:) – 2008-11-26 13:13:20