Java设计模式的策略模式简析

 更新时间:2023年12月04日 10:02:35   作者:制造bug的键盘钢琴师  
这篇文章主要介绍了Java设计模式的策略模式简析,策略模式中定义了一系列的算法族,算法族指的是类似于一系列的行为、策略,策略模式将一系列的行为封装成类,既可以说是将每一种相类似的行为都封装成一个类,也有可能存在特殊的不进行封装的行为,需要的朋友可以参考下

策略模式

1.定义:

策略模式定义了算法族,并分别进行封装,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的调用者。

简单解释一下:策略模式中定义了一系列的算法族,算法族指的是类似于一系列的行为、策略,策略模式将一系列的行为封装成类,既可以说是将每一种相类似的行为都封装成一个类(也有可能存在特殊的不进行封装的行为。)但最终都需要能够相互替换,也就是说各行为之间需要一定的共性,其需要实现共同的接口(或者说是有共同的方法)。还有需要注意的一个点,这些行为、算法的变化不能影响调用该行为的调用方,对于调用该使用行为的类来说是透明的。

2.主要解决(问题):

在有多种算法相似的情况下,使用if…else所带来的复杂和难以维护,将其有共性的算法进行封装,降低代码复杂度的同时使代码更易维护。

3.关键点:

实现同一个接口(既有同一个规范)

4.优点:

  • 算法可以自由切换。
  • 避免使用多重条件判断。
  • 扩展性良好

4.缺点:

  • 策略类相应增多。
  • 策略类都需对外暴露。

5.注意事项:

当一个系统的策略数量过多,多于四个则需要考虑使用混合模式,解决策略类膨胀的问题。

demo

共性接口:

在这里插入图片描述

开启命令行为:

在这里插入图片描述

关闭命令行为:

在这里插入图片描述

输出其余全部命令行为:

在这里插入图片描述

编写SpringBeanFactory工厂类

用以统筹管理实体对象:

在这里插入图片描述

策略模式执行实例(策略主体)

在这里插入图片描述

SystemCommdndEnum枚举【主要部分】

在这里插入图片描述

在这里插入图片描述

到此这篇关于Java设计模式的策略模式简析的文章就介绍到这了,更多相关Java策略模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis-Plus动态表名的实现示例

    Mybatis-Plus动态表名的实现示例

    面对复杂多变的业务需求,动态表名的处理变得愈发重要,本文主要介绍了Mybatis-Plus动态表名的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • MyBatisPlus深入探究映射匹配的兼容性

    MyBatisPlus深入探究映射匹配的兼容性

    在最近的工作中,碰到一个比较复杂的返回结果,发现简单映射已经解决不了这个问题了,只好去求助百度,学习mybatis映射匹配应该怎么写,将学习笔记结合工作碰到的问题写下本文,供自身查漏补缺,同时已被不时之需
    2022-08-08
  • SpringBoot统一功能处理的方式详解

    SpringBoot统一功能处理的方式详解

    这篇文章主要为大家详细介绍了SpringBoot统一功能处理的方式,文中的示例代码讲解详细,对我们学习或工作有一定借鉴价值,需要的可以参考一下
    2022-08-08
  • 一篇文章带你入门java方法

    一篇文章带你入门java方法

    这篇文章主要介绍了java基础之方法详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-08-08
  • Java ConcurrentHashMap如何合理指定初始容量

    Java ConcurrentHashMap如何合理指定初始容量

    本文主要介绍了Java ConcurrentHashMap如何合理指定初始容量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-10-10
  • Spring中IOC和AOP的深入讲解

    Spring中IOC和AOP的深入讲解

    这篇文章主要给大家介绍了关于Spring中IOC和AOP的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • java验证码生成具体代码

    java验证码生成具体代码

    这篇文章主要为大家分享了java验证码生成具体代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Java 添加、删除、格式化Word中的图片步骤详解( 基于Spire.Cloud.SDK for Java )

    Java 添加、删除、格式化Word中的图片步骤详解( 基于Spire.Cloud.SDK for Java )

    这篇文章主要介绍了Java 添加、删除、格式化Word中的图片( 基于Spire.Cloud.SDK for Java ),本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Spring事务框架之TransactionDefinition源码解析

    Spring事务框架之TransactionDefinition源码解析

    这篇文章主要为大家介绍了Spring事务框架之TransactionDefinition源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • mybatis-plus-boot-starter包与mybatis-plus-generator的冲突解决

    mybatis-plus-boot-starter包与mybatis-plus-generator的冲突解决

    本文主要介绍了mybatis-plus-boot-starter包与mybatis-plus-generator的冲突解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10

最新评论