策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
代码实现:会飞的鸭子
接口:策略方法
package Impl;
public interface Flybehavor {
public void fly();
}
package Impl;
//继承自飞行接口,提供具体的飞行方法
public class FlybyWind implements Flybehavor{
public void fly() {
System.out.println("振翅高飞");
}
}
Duck父类:
package cn.itcast_01;
import Impl.Flybehavor;
public class Duck {
Flybehavor fly;//创建接口对象
public void setfly(Flybehavor fly) {
this.fly = fly;
}
public void fly() {
fly.fly();//调用飞行实现类方法
}
}
Duck子类:
package cn.itcast_01;
import Impl.FlybyWind;
public class redheadDuck extends Duck{
public redheadDuck(){
super();
super.setfly(new FlybyWind());//调用“振翅高飞”飞行方法
}
}
测试类
package cn.itcast_01;
public class Test {
public static void main(String[] args) {
Duck duck = new redheadDuck();
duck.fly();
}
}
如果有其他的飞行方式,则新建飞行接口的继承类,实例化飞行方法,在Duck子类中调用即可。