優先選擇介面作為引用類型:
如果存在合適的接口,您應該透過它引用對象而不是具體類別。
這適用於參數、傳回值、變數和欄位。
使用介面時的彈性:
使用介面允許您更改實作而不影響程式碼。
範例:從 LinkedHashSet 變更為 HashSet 或 TreeSet,只需更改建構子即可。
何時不使用介面:
特定實現的功能:
如果實作提供了介面不需要的東西(例如 LinkedHashSet 保證迭代順序,但 HashSet 不保證)。
沒有適當的介面:
有些類別如 String 或 BigInteger 沒有等效的接口,必須直接使用。
基於類別的框架:
範例:java.io套件中的OutputStream是透過抽象類別引用的,而不是介面。
特定實現的方法:
範例:PriorityQueue 實作了 Queue,但 Queue 中沒有 comparator() 方法。僅當您需要此額外方法時才使用該類別。
好處:
使用介面使程式更加靈活和模組化,使您可以輕鬆更改實現而不破壞現有程式碼。
程式碼範例
很好的例子:使用介面作為類型
Set<String> s = new LinkedHashSet<>();
壞例子:使用具體類別作為類型
LinkedHashSet<String> s = new LinkedHashSet<>();
靈活性:更改實作而不影響程式碼
Set<String> s = new TreeSet<>();
使用 String 這樣的 Final 類別的範例
String str = "Hello";
使用框架基底類別的範例
OutputStream output = new FileOutputStream("file.txt");
以上是專案透過其介面引用對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!