原则:
1.把程序中需要变化的部分独立出来
2.面向接口编程
3.多用组合,少用继承,组合是具有各自功能的成员组合
策略模式:定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户,FlayBehavior和QuackBehavior为独立的算法族
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public Duck() {
}
public abstract void display();
public void performFly() {
flyBehavior.fly();
}
public void performQuack() {
quackBehavior.quack();
}
public void swim() {
System.out.println("All ducks float, even decoys");
}
public void setFlyBehavior( FlyBehavior fb ) {
flyBehavior = fb;
}
public void setQuackBehavior( QuackBehavior qb ) {
quackBehavior = qb;
}
}