gpt4 book ai didi

轻松掌握Java策略模式

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章轻松掌握Java策略模式由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

特点:

    1、算法可以自由切换.

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

    3、扩展性良好.

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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策略模式的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com