策略就是方法。策略模式的优点是高内聚低耦合,扩展性强。下面是一个简单的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();
}
}
打印结果:
方法一实现了!!
方法二实现了!!
方法三实现了!!
本文通过一个简单示例介绍了策略模式的概念及应用。策略模式允许在运行时选择算法或行为,通过定义一系列可互换的算法并将它们封装起来,使它们可以相互独立地变化。
1451

被折叠的 条评论
为什么被折叠?



