设计模式原则:
- 找出应用中可能需要变化之处,独立出来,不要和不需要变化的代码混在一起。
- 针对接口编程,而不是针对实现编程。
- 多用组合,少用继承。
策略模式:
- 定义:策略模式定义了算法簇,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
- 代码:
Duck类:
public abstract class Duck{
FlyBehavior flyBehavior;//飞行的属性
public Duck(){
}
public abstract void swim();
public void performFly(){
flyBehavior.fly();
}
public void setFlyBehavior(FlyBehavior fb){
flyBehavior=fb;
}
}
FlyBehavior接口:
public interface FlyBehavior{
public void fly();
}
FlyBehavior接口的实现类:
public class FlyWithWings implement FlyBehavior{
public void fly(){
System.out.println(" I can fly");
}
}
测试类:
Duck model = new ModelDuck();
model.performFly();
model.setFlyBehavior(new FlyRocketPowered());
model.performFly();
总结:
策略模式就是把父类中容易改变,扩展或因人而已的方法,定义成类的属性,再把这些方法定义成接口,用不同的类去实现接口,不同的子类可以调用实现接口的不同的类,从而可以达到自己的要求,并且可以用set属性的方法,动态改变接口的实现。