Programming to Interface 是OOD的基本原則之一。
但是不等于說只要應(yīng)用了Interface就符合Programming to Interface的原則。
我對以下使用Interface的情形有不同看法。
為DDO建立一個接口(Interface)。然后當(dāng)DDO跨層使用時,我們用該接口作為參數(shù)類型。
我認(rèn)為這是沒有意義的,根本實現(xiàn)不了Programming to Interface 的初衷。
1. Programming to Interface 的好處之一是可以為不同的實現(xiàn)提供統(tǒng)一的接口。但是這個案例中,只有一個DDO,對應(yīng)這一個Interface。
2. Programming to Interface 的好處之二是當(dāng)實現(xiàn)改變時,interface可以保持不變。這樣Programming to Interface 部分的代碼就可以不用隨實現(xiàn)的改變而改變。但是這個案例中,一旦DDO發(fā)生了改變,Interface也需要發(fā)生改變。
總之,這這種情形下,增加一個接口純屬多余,沒有增加任何價值,反而增加了維護(hù)接口的麻煩。
這也說明正確應(yīng)用Programming to Interface 是多么重要。否則再漂亮的法則一旦濫用,誤用,不僅沒有任何好處,而且可能造成額外的負(fù)擔(dān)。
造成這種誤用的關(guān)鍵原因是,DDO并非一種理想的Object,getter和setter沒有足夠的抽象程度,不能提煉成接口。勉強用上接口也是徒勞的。