在初學Java的時候,經常能看到教材上的寫法,使用了介面Map來引用一個map,而不是它的具體實現,那麼這樣做的好處是什麼呢? <Effective Java>第52條:通過介面引用對象 作者認為,如果有合適的介面類型存在,那麼對於參數、返回值、變數和域來說,就都應該使用就介面類型進行聲明。 只有當 ...
在初學Java的時候,經常能看到教材上的寫法,使用了介面Map來引用一個map,而不是它的具體實現,那麼這樣做的好處是什麼呢?
<Effective Java>第52條:通過介面引用對象
作者認為,如果有合適的介面類型存在,那麼對於參數、返回值、變數和域來說,就都應該使用就介面類型進行聲明。
只有當你利用構造器創建某個對象的時候,才真正需要引用這個對象的類。
// 一個好的慄子
Map<Integer,String> map = new HashMap<>();
//一個不那麼好的慄子
HashMap<Integer,String> map = new HashMap<>();
這樣做的好處在於:你的程式會更靈活。當你決定更換實現的時候,所要做的就只是:改變構造器中類的名稱。就比如:
Map<Integer,String> map = new TreeMap<>();
如果不這麼做,在最早就使用了HashMap來聲明瞭map,如果客戶端在其他地方,使用了HashMap的操作,那麼後續若改動了,則無法通過編譯了。
總結:用介面引用對象會使程式更加靈活。