读书笔记
策略模式
用算法簇去定义,封装起来;这种模式可以是算法独立起来,更加好的调用。
Note:在界面调用的时候尽量是用接口定义而不是方法定义
//不推荐
Dog dog=new Dog();
//推荐,Dog是Animal的实现类
Animal dog=new Dog();
这种模式的定义可以方便的使用,扩展性也会比较好
算法推荐的模式:
public class DuckDemo implements Duck {
//用全局变量去扩展
//用接口去带来扩展性,默认属性
private FlyAbility flyAbility =new FlyWithoutWings();
private QuackAbility quackAbility = new Gugu();
//通过set方法,去修改属性
public void setFlyAbility(FlyAbility flyAbility) {
this.flyAbility = flyAbility;
}
public void setQuackAbility(QuackAbility quackAbility) {
this.quackAbility = quackAbility;
}
... ...
}
测试方法:
public class TestCase {
public static void main(String[] args){
//面向接口变成,不要变成对象;带来扩展性
Duck duck=new DuckDemo();
((DuckDemo) duck).fly();
((DuckDemo) duck).setFlyAbility(new FlyWithWings());
((DuckDemo) duck).fly();
}
}