一、设计思想
策略模式有很好的复用性,可维护性。它的主要思想是将未来可能需要变换的部分分离出来单独封装起来。针对接口编程,行为(算法)的实现类都必须继承这个行为的接口,然后在我们想要实现的类中拥有这个接口变量,当需要不同的行为时给这个接口变量创建不同的行为实现类就可以了。通过方法还可以动态的更改行为。
二、Demo
行为的接口
public interface Fly {
public void fly();
}
public interface Quack {
public void quack() ;
}
行为的具体实现类
public class DuckFly implements Fly{
@Override
public void fly() {
// TODO 自动生成的方法存根
System.out.println("小鸭子飞啊飞");
}
}
public class DuckQuack implements Quack{
@Override
public void quack() {
// TODO 自动生成的方法存根
System.out.println("啊!啊!啊!啊!");
}
}
想要实现的超类
public class Duck {
Fly fly;
Quack quack;
String name;
public Duck(String name) {
this.name=name;
}
public String getName() {
return this.name;
}
public void fly(){
fly.fly();
}
public void quack() {
quack.quack();
}
}
想要实现的子类
public class MyDuck extends Duck{
public MyDuck(String name) {
super(name);
fly=new DuckFly();
quack=new DuckQuack();
}
}
测试主程序
public class Test {
public static void main(String[] args) {
MyDuck myDuck=new MyDuck("小明");
System.out.println(myDuck.getName());
myDuck.fly();
myDuck.quack();
}
}
运行结果: