1.官方定义:策略模式将可变的部分从程序中抽离成算法接口,在该接口下分别封装一些类算法的实现。
2.使用的场景:
(1)许多相关的类仅仅是行为差异。
(2)运行时选取不同的算法变体。
(3)通过条件语句在多个分支中选取一样。
3.关键代码:
超类:组合一个策略接口
private FlyingStragety flyingStragety;
public void setFlyingStragety(FlyingStragety flyingStragety) {
this.flyingStragety = flyingStragety;
}
public void fly(){
flyingStragety.performFly();
}
具体的子类:传递一个策略的实现
public RedheadDuck(){
super();
super.setFlyingStragety(new FlyWithWin());
}
策略接口:
public interface FlyingStragety {
void performFly();
}
策略接口的实现:
public class FlyNoWay implements FlyingStragety{
@Override
public void performFly() {
System.out.println("我不会飞行!");
}
}
网友评论