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初学者,我下面写的东西都是我个人的猜想,楼主可以作为参考,但不要相信。--------感觉由context包装以后的耦合性更低一些,传入不同的new AddStrategy(),context.calculate(10, 5)会实现不同的功能,通过这样的方式,如果通过配置文件的方式来实现对算法的配置,直接利用接口就把代码写死了,而策略模式由于具有低耦合性就可以通过配置对象来配置不同的算法。。 参考技术A 不会

以上是关于java策略模式应用场景为何?的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 - 应用场景:模板方法模式 + 策略模式 + Lambda

模板方法模式策略模式 的 联系区别和应用场景

细解 kafka 架构应用场景及良好特性

MVVM模式在iOS中常用场景

设计模式之策略模式与责任链模式详解和应用

Spring中常见的设计模式——策略模式