整理 Effective Java 書中 Item 21: Design interfaces for multiple inheritance 心得筆記
主旨
Java 8 引入了 default method
,終於讓介面可以新增方法而不會立刻讓現有的實作壞掉。但這個看似萬能的解法,其實潛藏不少風險,特別是對原本沒設計來支援這些方法的舊實作。這篇提醒你:設計介面時最好一開始就想清楚,因為事後「加東西」很可能會讓系統爆炸。
點出問題:default method 的魔法有限
在 Java 8 之前,介面一旦公開出去,就幾乎不能再改。加一個新方法,所有實作都會爆錯。default method
的出現,讓我們「表面上」可以擴充介面,不用動到原本的實作。