Java策略模式取代if else

别再大量的if else了, 代码太简陋了, 可读性太差了.

策略模式的定义

....

简单来说 每个模块相互独立 互不影响 提高代码的可扩展性 !

举栗子, 如下烂代码

if ("花呗支付".equals(type)) {

	// 花呗支付的业务逻辑处理

} else if ("微信支付".equals(type)) {

	// 微信支付业务逻辑

} else if ("云闪付".equals(type)) {

	// 云闪付支付业务逻辑

} else if ("...".equals(type)) {

    // ....
}

思考: 可以定义一个支付接口, 支付方法, 不同的支付方式写不同的实现类, 互不干扰, 互不影响, 以后添加新的支付方式, 只需添加新的实现类实现支付接口, 重写他的支付方法即可, 无需改动之前写的代码.

正好今天敲代码的时候 使用到了该设计模式, 简单分享一下

定义接口

定义不同的实现类

每个实现类都会处理自己的业务, 互不干扰, 相互隔离, 比如 如下两个实现类 实现了相同接口处理不同的业务

定义接口

是不是比大量的if else 简洁多了~

把每个不同的模块抽取出来, 通过bean的名称获取接口的实现类, 执行方法

到此这篇关于Java策略模式取代if else的文章就介绍到这了,更多相关Java 策略模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Java策略模式

    一.策略模式到底是什么? 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 简单的说,策略模式代表了一类算法的通用解决方案,你可以在运行时选择使用哪种解决方案. 策略模式的重心 策略模式的重心不是如何实现算法, 而是如何组织.调用这些算法, 从而使得程序结构更加灵活,具有更好的维护性和扩展性. 算法的平等性 策略模式一个很大的特点就是各个策略算法的平等性.对于一系列具体的

  • Java如何利用策略模式替代if/else语句

    平时在开发中避免不了使用大量的if else语句,但过多层的if else对于性能有很大的开销,类似如下代码 public class MainStart { public static void main(String[] args) { String msgid = "MS066"; if(message.equals("MS066")){ System.out.println("MS066"); }else if (message.equa

  • 浅谈用SpringBoot实现策略模式

    目录 问题的提出 策略模式代码的实现 进一步的思考 心得体会 问题的提出 阅读别人代码的时候最讨厌遇到的就是大段大段的if-else分支语句,一般来说读到下面的时候就忘了上面在判断什么了.很多资料上都会讲到使用策略模式来改进这种代码逻辑. 策略模式的类图如下: 只需要按照这个图写代码就可以了. 策略模式代码的实现 借助Spring框架我们能够轻松的实现策略模式. 举一个简单的例子,我们去咖啡店买咖啡的时候,会根据自己的喜好和胃容量选择大小杯.那么我们就要实现一个CoffeeStategy: pa

  • java设计模式--策略模式详解

    目录 策略模式 Demo 代码: 总结 策略模式 策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法.用算法族分别封装起来,实现同一个接口,让他们之间可以互相替换,让算法的变化独立于使用算法的客户. 主要解决:在有多种算法相似的情况下,使用 if-else 所带来的复杂和难以维护. 如何解决:将这些算法封装成一个一个的类,任意地替换. 何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为. 使用场景: 如果在一个系统

  • Spring 环境下实现策略模式的示例

    背景 最近在忙一个需求,大致就是给满足特定条件的用户发营销邮件,但是用户的来源有很多方式:从 ES 查询的.从 csv 导入的.从 MongoDB 查询-.. 需求很简单,但是怎么写的优雅,方便后续扩展,就存在很多门道了. 我们的项目是基于 Spring Boot 开发的,因此这篇文章也会基于 Spring Boot 作为基础框架,教你如何使用 Spring 依赖注入的特性,优雅的实现策略模式. 1. 简单粗暴 最简单粗暴直接的方式莫过于 if...else- 了,伪代码如下: if(来源 ==

  • Java设计模式之java策略模式详解

    目录 为什么使用策略模式? 策略模式包含角色 策略模式的类图 排序案例 策略模式的优点 策略模式的缺点 适用场景 源码分析策略模式的典型应用 Java Comparator 中的策略模式 参考文章 总结 为什么使用策略模式? 实现某一个功能有多条途径,每一条途径对应一种算法,此时我们可以使用一种设计模式来实现灵活地选择解决途径,也能够方便地增加新的解决途径. 策略模式包含角色 Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略.在环境类中维持一

  • Java策略模式取代if else

    别再大量的if else了, 代码太简陋了, 可读性太差了. 策略模式的定义 .... 简单来说 每个模块相互独立 互不影响 提高代码的可扩展性 ! 举栗子, 如下烂代码 if ("花呗支付".equals(type)) { // 花呗支付的业务逻辑处理 } else if ("微信支付".equals(type)) { // 微信支付业务逻辑 } else if ("云闪付".equals(type)) { // 云闪付支付业务逻辑 } els

  • Java策略模式实现简单购物车功能

    策略模式是一种行为模式.用于某一个具体的项目有多个可供选择的算法策略,客户端在其运行时根据不同需求决定使用某一具体算法策略. 策略模式也被称作政策模式.实现过程为,首先定义不同的算法策略,然后客户端把算法策略作为它的一个参数.使用这种模式最好的例子是Collection.sort()方法了,它使用Comparator对象作为参数.根据Comparator接口不同实现,对象会被不同的方法排序. 本文例子是,完成一个简单地购物车,两种付款策略可供选择,一为信用卡,另外一种为Paypal. 首先创建策

  • Java 策略模式与模板方法模式相关总结

    1.  策略模式 策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换. 当你有许多仅在执行某些行为时略有不同的相似类时,可使用策略模式.使用该模式能将类的业务逻辑与其算法实现细节隔离开来. 说白了,其实还是解耦 策略模式的结构如上图所示,主要包含三个角色: 抽象角色:通常是一个接口 具体角色:接口的具体实现 环境角色:调用接口的上下文环境,通常是一段业务逻辑方法 举个常见的例子:支付 先定义一个接口 PayStrategy.java p

  • Java 策略模式 if-else用法实例详解

    目录 引言: 策略模式 comparable接口 comparator接口 不同的排序策略实现 策略模式比if-else香在哪呢?有缺点吗? 策略模式有哪些使用场景呢? 有N多个策略怎么办? 总结 引言: 公司要扩大规模,目前需要购买一批汽车,还要招聘一批保安,老板指示暂时只想看新车,只需要给他看按照价格排好序的新车列表就行:保安候选人按照安保工作经验排好序给他一个列表. 汽车数据,还有保安候选人的数据已经放在了程序员的面前,你只需要给我个列表就好了. 基于这个需求,我们自然而然的会想到排序啊.

  • 轻松掌握Java策略模式

    定义:一个类的行为或其算法可以在运行时更改.在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象.策略对象改变 context 对象的执行算法. 特点: 1.算法可以自由切换. 2.避免使用多重条件判断. 3.扩展性良好. 企业级开发和常用框架中的应用:java.servlet.http.HttpServlet的service方法 实例:对两个数的操作行为. public class Demo { public static void main(Str

  • Java策略模式的简单应用实现方法

    在使用图像处理软件处理图片后,需要选择一种格式进行保存.然而各种格式在底层实现的算法并不相同,这刚好适合策略模式.编写程序,演示如何使用策略模式与简单工厂模式组合进行开发. 思路如下: 1.使用interface来定义一个接口,在该接口中定义save()方法:2.根据图片格式定义不同的类,分别在这些类中使用关键字implements实现接口:3.创建一个实现选择的类,在该类中定义实现选择的方法,该方法返回值为对应的图片保存类:4.在主方法中实现接口.代码如下: 复制代码 代码如下: public

  • 23种设计模式(11)java策略模式

    23种设计模式的学习视频已为大家备好,需要的可以在公众号内回复"设计模式"获取下载链接. 定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换. 类型:行为类模式 类图: 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换.在前面说过的行为类模式中,有一种模式也是关注对算法的封装--模版方法模式.         对照类图可以看到,策略模式与模版方法模式的区别仅仅是多了一个单独的封装类Context,它与模版方法模式的区别

  • Java设计模式之策略模式详解

    本文实例为大家分享了Java策略模式,供大家参考,具体内容如下 1.策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式(PolicyPattern). 定义如下: Define a family of algorithms,encapsulate each one,and make them interchangeable.    (定义一组算法,将每个算法都封装起来,并且使它们之间可以互换.) 策略模式的通用类图如下所示: 策略模式的三个角色: ● Context

随机推荐