手机
当前位置:查字典教程网 >编程开发 >Java >轻松掌握Java策略模式
轻松掌握Java策略模式
摘要:定义:一个类的行为或其算法可以在运行时更改。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策...

定义:一个类的行为或其算法可以在运行时更改。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

特点:

1、算法可以自由切换。

2、避免使用多重条件判断。

3、扩展性良好。

企业级开发和常用框架中的应用:java.servlet.http.HttpServlet的service方法

实例:对两个数的操作行为。

public class Demo { public static void main(String[] args) { Strategy strategy1 = new StrategyAdd(); Strategy strategy2 = new StrategyDiv(); Context context1 = new Context(strategy1); context1.execute(10, 5); context1 = new Context(strategy2); context1.execute(10, 5); } } interface Strategy{ public void doOperation(int num1,int num2); } class StrategyAdd implements Strategy{ public void doOperation(int num1, int num2) { System.out.println("执行加法"); System.out.println(num1+"+"+num2+"="+(num1+num2)); } } class StrategySub implements Strategy{ public void doOperation(int num1, int num2) { System.out.println("执行减法"); System.out.println(num1+"-"+num2+"="+(num1-num2)); } } class StrategyMul implements Strategy{ public void doOperation(int num1, int num2) { System.out.println("执行乘法"); System.out.println(num1+"*"+num2+"="+(num1*num2)); } } class StrategyDiv implements Strategy{ public void doOperation(int num1, int num2) { System.out.println("执行除法"); System.out.println(num1+"/"+num2+"="+(num1/num2)); } } class Context{ private Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } public void execute(int num1,int num2){ strategy.doOperation(num1, num2); } }

策略模式强调的是运行时更改,可能在上面的代码中,这种运行时更改没有得到很好的体现,我们可以假设一个实际场景,就是当一个对象参数传到一个方法中来的时候,假设我们要根据参数的不同选择不同的方法,我们这是会考虑if-else来进行判断,而策略模式则是对这些if-else进行分类,每一个判断一个类,然后对象过来了,直接调用策略接口方法,而对象参数属于哪个具体类则是有jvm来判断,我们不必要去了解对象参数属性类型什么的,这样不仅简化了我们的开发工作,而且相比较于if-else,这样有更好的扩展性。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持查字典教程网。

【轻松掌握Java策略模式】相关文章:

java无锁hashmap原理与实现详解

java字符串的合并

java与c#的语法区别详细介绍

java自动装箱拆箱深入剖析

Java泛型的简单实例

Java代码重构的几种模式详解

java单例模式学习示例

java多种幻灯片切换特效(经典)

java教程之对象序列化使用基础示例详解

100-200之间所有素数求和程序代码(二个版本)

精品推荐
分类导航