HeadFirst Strategy策略模式
思考方式:
把会变化的部分取出来并封装起来,不要和不需要变化的代码混在一起
鸭子(抽象)不会变化,鸭子的行为是具体的鸭子所具有的,不同的鸭子有不同的Fly行为和Quack行为
--------------------------------------------------------------------------------------------------------------------------------
package HeadFirst.Strategy;
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 duck float,even decoys!");
}
}
--------------------------------------------------------------------------------------------------------------------------------
package HeadFirst.Strategy;
public interface FlyBehavior {
public void fly();
}
--------------------------------------------------------------------------------------------------------------------------------
package HeadFirst.Strategy;
public class FlyNoWay implements FlyBehavior {
public void fly() {
// TODO Auto-generated method stub
System.out.println("I can't fly...");
}
}
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------