1.本質
策略模式用到就是“多態”的思想,父類有多個子類,爲同一個行爲實現不同的表現形式:
2.案例(生活例子)
舉例: 1箇中國人,1個印度人,他們都吃飯,但是中國人是用筷子,印度人是用手,這個就是多態,同一行爲的2種實現方式
代碼:
吃飯行爲:
public interface Eating { void havingDinner();}
中國人和印度人:
public class Chinese implements Eating{
@Override
public void havingDinner() {
System.out.println("中國人用筷子吃飯");
}
}
public class Indian implements Eating{
@Override
public void havingDinner() {
System.out.println("印度人吃飯用手");
}
}
策略類和測試函數:
public class Dinner {
private Eating eating;
//定義一個吃飯方式的方法,在這裏由於傳入不同的實現類,從而實現多態
void havingDinnerStyle(Eating eating){
this.eating = eating;
eating.havingDinner();
}
//開始測試
public static void main(String[] args) {
Eating ChineseEating = new Chinese();
Eating IndianEating = new Indian();
Dinner dinner =new Dinner();
dinner.havingDinnerStyle(ChineseEating);
dinner.havingDinnerStyle(IndianEating);
}
}
輸出結果:
中國人用筷子吃飯
印度人吃飯用手
拓展:
在業務複雜的情況下,實現的不一定是接口,可能是一個抽象類,裏面除了抽象方法,還有一些屬性啊其他方法什麼的,但是理念都是一樣的。