介面作為引用型別的偏好:
如果存在合適的接口,您應該透過它引用對象而不是具體的類別。
這適用於參數、傳回值、變數和欄位。
使用介面的彈性:
使用介面允許您更改實作而不影響程式碼。
範例:從 LinkedHashSet 變更為 HashSet 或 TreeSet,只需更改建構子即可。
何時不使用介面:
特定於實現的功能:
如果實作提供了介面不需要的東西(例如 LinkedHashSet 保證迭代順序,但 HashSet 不保證)。
沒有適當的介面:
某些類別(例如 String 或 BigInteger)沒有等效接口,必須直接使用。
基於類別的架構:
範例:java.io套件中的OutputStream是透過抽象類別引用的,而不是介面。
特定於實現的方法:
範例:PriorityQueue 實作了 Queue,但 Queue 中沒有 comparator() 方法。僅當您需要此額外方法時才使用該類別。
益處:
使用介面使程式更加靈活和模組化,使您可以輕鬆更改實現而不破壞現有程式碼。
代碼範例
很好的例子:使用介面作為類型
Sets = new LinkedHashSet();
壞例子:使用具體類別作為類型
LinkedHashSets = new LinkedHashSet();
靈活性:更改實作而不影響程式碼
Sets = new TreeSet();
使用 String 等 Final 類別的範例
String str = "Hello";
使用框架基底類別的範例
OutputStream output = new FileOutputStream("file.txt");
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3