interface Idemo {
default void demo(){
System.out.println("demo");
}
}
1. 擴展既有代碼
在這一新特性出現之前,如果我們要擴展既有代碼,給某一個接口增加新方法,就會帶來一個問題,即其實現類無新增接口之實現,編譯便不會通過。
2. 面向組合
當我們遇到這樣的業務邏輯,即多個功能的不同組合,原來我的做法就是用設計模式(Decorate Pattern)來解決,現在我們有了default method,則我們多了另一種選擇。
interface IIcecream {
}
interface IBerryIcecream{
default bool addBerry(){
}
}
interface IAppleIcecream{
default bool addApple(){
}
}
interface IOrangeIcecream{
default bool addOrange(){
}
}
class AppleOrangeIcecream implements IIcecream, IAppleIcecream, IOrangeIcecream{
}
class OrangeBerryIcecream implements IIcecream, IBerryIcecream, IOrangeIcecream{
}