轻松掌握Java策略模式

网友投稿 212 2023-07-04


轻松掌握Java策略模式

定义:一个类的行为或其算法可以在运行时更改。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 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("执行加法");

SystemThpQhd.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, ihttp://nt num2) {

System.out.println("执行乘法");

System.out.println(nuhttp://m1+"*"+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,这样有更好的扩展性。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 锁的知识总结及实例代码
下一篇:java 数据结构 冒泡排序实现代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~