/**
*
*/
package strategy;
/**
* @author Administrator
*
*/
public class ModelDuck extends Duck {
public ModelDuck() {
flyBehavior = new FlyNoWay();
quackBehavior = new Quack();
}
/* (non-Javadoc)
* @see strategy.Duck#display()
*/
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println(I'm a model duck. );
}
}
执行时, 只需要执行各个子类继承 父类的方法(perform), 即可, 也可以使用set()方法改变其行为;
代码:
/**
*
*/
package strategy;
/**
* @author Administrator
*
*/
public class MiniDuckSimulator {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Duck mallard = new MallardDuck();
mallard.performQuack();
mallard.performFly();
Duck model = new ModelDuck();
model.performFly();
model.performQuack();
model.setFlyBehavior(new FlyRocketPowerd());
model.performFly();
}
}
面向对象的原则:
1. 封装变化的部分;
2. 多用组合, 少用继承;
