策略模式

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("我不会飞行!");       
    }
     
}

你可能感兴趣的:(策略模式)