策略就是方法。策略模式的优点是高内聚低耦合,扩展性强。下面是一个简单的Demo:
Demo描述:定义一个接口,定义三个(可以更多)方法实现该接口,定义“盛放”这些方法的类,这里的“盛放”就是持有引用的意思,这里要动态持有引用,不建议写死。
接口:
public interface Methord {
public void operate();
}
实现方法:
//方法一
public class Methord_First implements Methord {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("方法一实现了!!");
}
}
//方法二
public class Methord_Second implements Methord {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("方法二实现了!!");
}
}
//方法三
public class Methord_Third implements Methord {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("方法三实现了!!");
}
}
持有不通策略引用的类
//关键
//在该类中声明接口,利用该类的构造方法,间接让该类动态持有不通策略的引用,继而能使用其中方法。
public class Context {
public Methord methord;
public Context(Methord methord){
this.methord = methord;
}
public void context_operate(){
methord.operate();
}
}
测试类
public class Test {
public static void main(String[] args){
Context context;
//方法一
context = new Context(new Methord_First());
context.context_operate();
//方法二
context = new Context(new Methord_Second());
context.context_operate();
//方法三
context = new Context(new Methord_Third());
context.context_operate();
}
}
打印结果:
方法一实现了!!
方法二实现了!!
方法三实现了!!