服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - JAVA教程 - 轻松掌握Java策略模式

轻松掌握Java策略模式

2020-06-19 11:10断了联系 JAVA教程

这篇文章主要帮助大家轻松掌握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中实现四则运算代码

    java中实现四则运算代码

    本文给大家分享了几个java中实现四则运算的代码,有个人的也有网友的,代码写的不是很好,难免会有BUG,忘发现BUG的亲们能提醒我下,好让我改进 ...

    hebedich1742020-01-03
  • JAVA教程JavaWeb工程中集成YMP框架快速上手

    JavaWeb工程中集成YMP框架快速上手

    YMP是一个非常简单、易用的一套轻量级JAVA应用开发框架,设计原则主要侧重于简化工作任务、规范开发流程、提高开发效率。对YMP框架感兴趣的小伙伴们可...

    有理想的鱼3652020-04-02
  • JAVA教程java必学必会之线程(2)

    java必学必会之线程(2)

    本文对java线程进行深入学习,重点介绍了线程同步问题、线程死锁问题,感兴趣的小伙伴们可以参考一下 ...

    孤傲苍狼3772020-03-07
  • JAVA教程Java使用Apache POI库读取Excel表格文档的示例

    Java使用Apache POI库读取Excel表格文档的示例

    POI库是Apache提供的用于在Windows下读写各类微软Office文档的Java库,这里我们就来看一下Java使用Apache POI库读取Excel表格文档的示例: ...

    it_wangxiangpan4802020-05-15
  • JAVA教程Java基础类Class使用指南

    Java基础类Class使用指南

    关于通过类名访问class属性,我朋友问过好几次了,一直没明白这个东西到底是什么?对此,我参照网友们的博客,总结了一些小知识,如发现错误,希望...

    hebedich4592020-03-19
  • JAVA教程Spring与Mybatis相结合实现多数据源切换功能

    Spring与Mybatis相结合实现多数据源切换功能

    这篇文章主要介绍了Spring与Mybatis相结合实现多数据源切换功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 ...

    Alfa3172020-05-20
  • JAVA教程Java的Struts框架中的主题模板和国际化设置

    Java的Struts框架中的主题模板和国际化设置

    这篇文章主要介绍了Java的Struts框架中的主题模板和国际化设置,Struts是Java的SSH三大web开放框架之一,需要的朋友可以参考下 ...

    java教程网2602020-05-25
  • JAVA教程谈谈HttpClient使用详解

    谈谈HttpClient使用详解

    这篇文章给大家介绍HttpClient使用,httpClient是一个客户端的http通信实现库,HttpClient的目标是发送和接收HTTP报文。本文讲解的非常详细,对HttpClient使用感兴...

    wangpeng0471882020-01-10