java策略模式应用场景为何?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java策略模式应用场景为何?相关的知识,希望对你有一定的参考价值。
我认为策略模式是java众多模式中最常用,最常见的一种模式。一句话说,针对同一命令(或行为),不同的策略做不同的动作。 (个人总结 难免疏漏 海涵)
举例来说,一个接口有两个实现:
interface RunBehavior
public void performRun();
class Run implements RunBehavior
public void performRun() System.out.println(" I can run!");
class JumpAsRun implements RunBehavior
public void performRun() System.out.println("I cannot run, but I can jump!");
解释一下这段简单的程序
跑是一种行为(接口)
正常的动物都可以跑(class Run)
麻雀是不能跑的,它只能跳(class JumpAsRun)
这样的话,其实我们有了一个行为的请求,那就是跑,然后我们有两个策略供选择。
那么如何调用呢?
class Anmial
RunBehavior runBehavior;
public void run()
this.runBehavior.performRun();
public void setRunBehavior(RunBehavior runBehavior)
this.runBehavior = runBehavior;
下面真正开始调用:
public class TestStrategy
public static void main(String args[])
RunBehavior rb1 = new Run();
Animal tiger = new Animal();
tiger.setRunBehavior(rb1);
tiger.run();
RunBehavior rb2 = new JumpAsRun();
Animal bird = new Animal();
bird.setRunBehavior(rb2);
bird.run();
// 上面的老虎和鸟分别用了一个策略,下面让老虎用鸟的策略
// 看看会发生什么
tiger.setRunBehavior(rb2);
tiger.run();
// 其实策略模式的重点就在这儿,给对象传入什么样的策略,执行什么样的动作。
具体的还要你自己多思考了,推荐《Head First Desigh Pattern》
全手工敲入代码,估计你需要微调如果想运行的话 参考技术A http://blog.csdn.net/u013279866/article/details/72398113
java策略模式与接口直接实现
java策略模式例子:https://www.cnblogs.com/java2016/p/5386615.html
Context context=new Context(new AddStrategy());
System.out.println(context.calculate(10, 5));
与
Strategy s=new AddStrategy();
s.calcuate(10,5);
的优劣怎么比较?谢谢!
以上是关于java策略模式应用场景为何?的主要内容,如果未能解决你的问题,请参考以下文章