1.官方定義:策略模式將可變的部分從程序中抽離成算法接口吆录,在該接口下分別封裝一些類算法的實現(xiàn)。
2.使用的場景:
(1)許多相關的類僅僅是行為差異。
(2)運行時選取不同的算法變體。
(3)通過條件語句在多個分支中選取一樣郁油。
3.關鍵代碼:
超類:組合一個策略接口
private FlyingStragety flyingStragety;
public void setFlyingStragety(FlyingStragety flyingStragety) {
this.flyingStragety = flyingStragety;
}
public void fly(){
flyingStragety.performFly();
}
具體的子類:傳遞一個策略的實現(xiàn)
public RedheadDuck(){
super();
super.setFlyingStragety(new FlyWithWin());
}
策略接口:
public interface FlyingStragety {
void performFly();
}
策略接口的實現(xiàn):
public class FlyNoWay implements FlyingStragety{
@Override
public void performFly() {
System.out.println("我不會飛行!");
}
}