简介策略模式是属于行为模式的,在策略模式中,一个类的行为或算法可以在运行时更改。其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能。优点算法可以自由切换避免使用多重判断条件扩展性良好缺点策略类会增多所有策略类都需要对外暴露使用场景使用在一个系统里面有许多类,它们之间的区别仅在
# Java 策略模式详解与应用 策略模式是一种行为设计模式,允许我们定义一系列算法(策略),将每个算法封装起来,并使它们可以相互替换。这种模式使得算法的变化独立于使用算法的客户。在Java编程中,策略模式能够帮助我们避免大量的 `if-else` 语句,从而使代码更为简洁和易于维护。 ## 何时使用策略模式策略模式的使用场景非常广泛,尤其在以下几种情况中非常合适: 1. 当你需要在多个
原创 2024-10-05 06:37:58
37阅读
选择结构分为四种:if单选择结构、if-else双选择结构、if-else if-else多选择结构、switch结构1、if单选择结构格式:if(【布尔表达式】或者【true/false】){【语句块】}表示的意思是:如果布尔表达式结果是true或者直接就是true,则执行大括号内语句块,再执行大括号后面的语句如果布尔表达式结果是false或者直接就是false,直接跳过大括号内语句块,此if单
策略(Strategy)模式:又名Policy,它的用意是定义一组算法,把它们一个个封装起来,并且使他们可以相互替换。策略模式可以独立于使用他们的客户端而变化。GOF策略模式静态结构类图如下:通过上图可以看出策略模式有以下角色构成:1、抽象策略(Strategy)角色:抽象策略角色由抽象类或接口来承担,它给出具体策略角色需要实现的接口;2、具体策略(ConcreteStrategy)角色:实现封装
转载 2023-07-25 17:44:40
138阅读
前言当代码中出现多重if-else语句或者switch语句时。弊端之一:如果这样的代码出现在多处,那么一旦出现需求变更,就需要把所有地方的if-else或者switch代码进行更改,要是遗漏了某一处,那么程序就会出错。弊端之二:代码逻辑难以理解,可读性低。 卫语句if (isSunshine()) { // 晴天时处理逻辑   return xx; } if (isRain())
  策略模式的实际应用就是消除代码块中的if else语句,这个时候就有人说了,if else挺好的啊,写代码本来就是if else的逻辑判断,处理业务  写小项目没问题,但是那种大型的项目,有的时候对一个变量的判断,走不同的逻辑,然后不断的加需求,就会导致类似下面这种if else if有几十个,真的很夸张    写一个简单的例子,如下,其实就是一个策略
面向对象的两个基本准则:单一职责:一个类只有一个发生变化的原因开闭原则:对拓展开放,对修改关闭《Java开发手册》中,有这样的规则:超过3层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现。在代码中纵使采用if/else也可以达到要求,但是如果过度采用这种方式会导致代码极为复杂,后期维护及拓展相当困难。因此策略模式可以用来解决这种困扰问:怎么使用策略模式首先明白,什么是
前言策略模式是为了减少主业务逻辑else if的代码量。当我们用策略模式的时候,要把else if的关系用另一种方式体现出来,以后如果要增加else if的关系,只需要增加策略模式的对应关系就可以。优点: 可以减少主业务逻辑的代码量,便于维护一、接口方式1.1 接口定义public interface Adapter { /** * 方法1 * * @para
转载 2023-09-25 20:38:56
219阅读
策略模式是oop中最著名的设计模式之一,是对方法行为的抽象,可以归类为行为设计模式,也是oop中interface经典的应用。其特点简单又实用,是我最喜欢的模式之一。策略模式定义了一个拥有共同行为的算法族,每个算法都被封装起来,可以互相替换,独立于客户端而变化。策略模式本身的实现比较简单,但是结合单例模式+简单工厂模式+注解+反射,可以构造出近乎完善的策略模式
转载 2023-11-25 21:50:16
252阅读
       写这篇文章的目的和上一篇单例模式一样,策略模式也是一种常用的设计模式,太多的if-else不仅看着不太美观而且不好维护,对于自己来说也等于复习了一遍策略模式。先说一下策略模式的定义:       策略模式封装了算法家族,可以让彼此之间互相替换,简单的来说就是比如之前系统调用了两个数据源,现在要添加第三个数
转载 2023-11-28 10:34:16
69阅读
一、策略模式的定义  策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。二、策略模式优缺点  策略模式的主要优点如下。多重条件语句不易维护,而使用策略模式可以避免使用多重条件转移语句。符合
策略模式:在我们实际开发场景中, 经常遇到多种情况、多种类型对应不同的解决方案,很多开发者都是采用if else if 这种解决方案,实际情况是, 过多的if else 导致业务类过于庞大,如果新增类型,要对业务类进行修改,不利于维护,也违反开闭原则。策略模式正是为了解决这一问题。下面我们假设一种简单的业务场景:一个会员有normal、vip、svip 三种等级,每种等级对应不同的价格优惠策略(不
java中用策略模式替代if-else的大段逻辑问题:java本来是一门以面向对象为主的语言,但很多人嘴上说着java面向对象,然后除了表映射实体之外,其他的还是面向过程的思路。 就比如今天要说的,代码中大段大段的if-else判断,每个if-else代码块中又有很多复杂的逻辑,导致整个代码混乱不堪,让别人看到就感觉看到屎一样的代码一样。那么,如何优雅的替代这些代码呢,其实有个设计模式策略模式
# Java 策略模式代替 if-else 在软件开发中,条件语句如 `if-else` 虽然是解决问题的有效方式,但当条件复杂或需要频繁修改时,代码易变得难以维护和理解。为了降低复杂度和提高可读性,设计模式,特别是策略模式(Strategy Pattern),提供了一种优雅的解决方案。本文将深入探讨策略模式,并通过代码示例展示如何用它替代传统的 `if-else`。 ## 什么是策略模式
原创 2024-09-19 07:46:57
51阅读
前言本次来一点实际开发中会用到的小技巧。比如平时大家是否都会写类似这样的代码: if(a){ //dosomething }else if(b){ //doshomething }else if(c){ //doshomething } else{ doshomething }条件少还好,一旦 else if 过多这里的逻辑将会比较混乱,并很容易出错。比如这样: 摘自 cim 中的一个
一、定义策略模式的定义:策略模式就是将一系列算法封装起来,并使它们之间相互替换。被封装起来的算法具有独立性外部不可改变其特性。–《来源于网络》二、解决的问题解决代码中充斥大量if…else造成高耦合度和复杂度,增加代码维护成本。三、UML结构示意图四、实际应用话说小编在入职一家新公司后,接到了一个代码维护的项目,需要面对一堆的祖传代码,其中有一个1000多行的类核心代码大概像下面这个样子:if(c
策略模式策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。用策略模式来封装算法,效果比较好。优点:  1、 简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。   2、 避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。   3、
转载 2024-10-18 19:25:09
16阅读
平时在开发中避免不了使用大量的if else语句,但过多层的if else对于性能有很大的开销,类似如下代码public class MainStart {    public static void main(String[] args) {         String msgid = "MS066";        if(message.equals("MS066")){          
原创 2021-04-28 16:54:11
492阅读
过多的if-else代码和嵌套,会使阅读代码的人很难理解到底是什么意思。尤其是那些没有注释的代码。其次是可维护性,因为if-else特别多,if-else是有办法可以消除掉的,其中比较典型的并且使用广泛的就是借助策略模式和工厂模式,准确的说是利用这两个设计模式的思想,彻底消灭代码中的if-else。传统用if else (伪代码)public BigDecimal calPrice(BigDeci
转载 2024-01-04 09:28:32
86阅读
介绍策略模式是一个非常简单且常用的设计模式策略模式最常见的作用就是解决代码中冗长的 if-else 或 switch 分支判断语句。 本文后半部分应该会让熟悉策略模式的同学也会有一些收获。本文重点在于笔者阅读 Flink 源码过程中发现了一个设计比较巧妙的点,可以对策略模式进行优化,所以特意写篇文章总结输出一下。 本文主要讲述:什么场景需要使用策略模式,即:策略模式的作用,策略模式解决了什么问题
  • 1
  • 2
  • 3
  • 4
  • 5