2021/04/02

[筆記] Effective Java #64 透過介面來引用物件

Effective Java 3rd 簡體中文版筆記 #64 透過介面來引用物件
如果有合適的介面,無論是參數、回傳型態、變數及 field,在引用時應宣告為介面。
// Good - uses interface as type
Set<Son> sonSet = new LinkedHashSet<>();
// Bad - uses class as type!
LinkedHashSet<Son> sonSet = new LinkedHashSet<>();
使用介面的引用,優點是如果 sonSet 更改實作的 class,所有引用該變數的地方,並不需要修改。那何時適合用 class 來作引用? 當使用的 class 沒有介面存在時,或是要調用的方法在介面中不存在。一般 value class 像是 StringInteger,經常都是 final,而且也不會有多個實作,這時就用 class 來引用即可。另一種是基於 class 的框架 (class-based framework) 下,往往是透過 base class 來引用物件,且大多是抽象類。

轉載請註明原文網址 https://cookieandcoketw.blogspot.com/2021/03/effective-java-64-refer-object.html

沒有留言:

張貼留言