java 使用策略模式减少if
使用多态:通过使用面向对象的多态特性,可以将不同的逻辑封装到不同的类中,避免大量的 if
语句。使用继承和接口来定义通用的方法,并让具体的实现类实现这些方法。
使用设计模式:使用设计模式可以更好地组织和管理代码逻辑,减少 if
语句的使用。例如,工厂模式、策略模式、观察者模式等都可以帮助将复杂的条件逻辑转化为更清晰和可扩展的结构。
使用映射表:将条件与对应的操作放入一个映射表中,避免使用大量的 if-else 语句。可以使用 Map
或者其他数据结构来存储条件和对应操作的关联关系,通过查找映射表获取对应的操作。
使用策略模式:策略模式将不同的策略封装成独立的类,避免使用大量的条件语句。通过定义一个策略接口,然后针对不同的情况实现不同的策略类,根据需要选择合适的策略进行处理。
使用枚举:使用枚举可以将条件与对应的操作封装到枚举常量中,避免使用大量的 if-else
语句。每个枚举常量代表一种情况,具有对应的方法或行为,通过枚举常量的方式来执行相应的操作。
使用函数式编程:Java 8 引入的函数式编程特性可以帮助减少条件判断。通过使用 lambda
表达式、方法引用等函数式编程的特性,可以将逻辑封装成函数并传递,避免大量的 if-else 语句。
interface PaymentStrategy {void pay(double amount);
}class CreditCardPayment implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("Paid " + amount + " using Credit Card");}
}class PayPalPayment implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("Paid " + amount + " using PayPal");}
}class PaymentContext {private PaymentStrategy paymentStrategy;public PaymentContext(PaymentStrategy paymentStrategy) {this.paymentStrategy = paymentStrategy;}public void performPayment(double amount) {paymentStrategy.pay(amount);}
}public class Main {public static void main(String[] args) {PaymentContext paymentContext1 = new PaymentContext(new CreditCardPayment());paymentContext1.performPayment(100.0); // 输出:Paid 100.0 using Credit CardPaymentContext paymentContext2 = new PaymentContext(new PayPalPayment());paymentContext2.performPayment(50.0); // 输出:Paid 50.0 using PayPal}
}
相关文章:
java 使用策略模式减少if
使用多态:通过使用面向对象的多态特性,可以将不同的逻辑封装到不同的类中,避免大量的 if 语句。使用继承和接口来定义通用的方法,并让具体的实现类实现这些方法。 使用设计模式:使用设计模式可以更好地组织和管理代码逻…...
第1章 引论
前言 这一章,阐述本书的目的,并简要复习离散数学以及程序设计的一些概念: 看到程序在较大输入情况下的运行性能与在适量输入情况下的运行性能具有同等重要性总结本书其余部分所需要的数学基础简要复习递归 1.1 本书讨论的内容 在许多问题当中…...
深入探究Linux文件:.sh、.swp文件的作用与意义 (linux .sh.swp)
近年来,Linux操作系统已经成为了许多服务器、云计算平台、嵌入式设备等领域的首选。Linux操作系统囊括了大量的命令和文件,而其中 .sh 和 .swp 文件是许多 Linux 用户较为熟悉的两种文件类型。那么,这两种文件的作用和意义是什么呢࿱…...
优雅的使用String字符串处理各种类型转换
文章目录 🌟 优雅的使用String字符串处理各种类型转换🍊 基本类型转字符串🍊 字符串转基本类型🍊 字符串与字符数组的转换🍊 字符串与字节数组的转换🍊 其他类型转字符串🍊 总结 📕我…...
Harmony 个人中心(页面交互、跳转、导航、容器组件)
个人中心 前言正文一、创建工程二、登录① 更换启动页面② 拓展修饰符③ 页面跳转④ 等待进度条 三、导航栏四、首页① 轮播图② 网格列表 五、我的① 带参数跳转 六、源码 前言 今天是1024,祝各位程序员们,钱多事少离家近,不秃也强bug黄。在…...
AlDente Pro for Mac: 掌控电池充电的终极解决方案
你是否曾经为了保护你的MacBook的电池,而苦恼于无法控制它的充电速度?AlDente Pro for Mac 是一款专为Mac用户设计的电池管理工具,它能帮助你解决这个问题。 AlDente Pro for Mac 是一款电池最大充电限制软件,它能够让你自由地设…...
tomcat的负载均衡、动静分离(nginx联动)
动静分离: 访问静态页面和动态页面分开 实现动态和静态页面负载均衡 实验5台虚拟机 一、动态负载均衡 3台虚拟机模拟: 代理服务器:30 tomcat动态页面:21、22 代理服务器: proxy_pass http://tomcat; proxy_set_h…...
基于单片机的温湿度检测及远程控制系统设计
目 录 引 言. 2 第一章 绪 论. 2 1.1 单片机简介 2 1.2 传感器简介 2 1.3 LCD液晶显示器简介 2 1.4 本设计的主要内容和目标 2 第二章 系统总体设计. 2 2.1 系统功能要求与技术指标 2 2.1.1 功能要求. 2 2.1.2 技术指标. 2 2.2 系统设计思路 2 2.3系统设计原则 2 2.4 系…...
前后端交互系统:在Node.js中运行JavaScript
在Node.js中运行JavaScript,您需要编写适用于服务器端的代码,而不是浏览器端的代码。以下是一些示例代码,用于在Node.js中创建一个简单的HTTP服务器并在浏览器中访问它: // 引入Node.js内置的http模块 const http require(http);…...
Maven学习
Maven介绍 Maven是Apache的一个开源项目,主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。 Maven可以让团队能够更科学的构建项目,我们可以用配置文件的方式,对项目的名称、描述、项目版本号、项目依赖等信息进行描述…...
《动手学深度学习 Pytorch版》 10.2 注意力汇聚:Nadaraya-Watson 核回归
import torch from torch import nn from d2l import torch as d2l1964 年提出的 Nadaraya-Watson 核回归模型是一个简单但完整的例子,可以用于演示具有注意力机制的机器学习。 10.2.1 生成数据集 根据下面的非线性函数生成一个人工数据集,其中噪声项 …...
测试C#调用Windows Media Player组件
新建基于.net framework的Winform项目,可以通过添加引用的方式选择COM组件中的Windows Media Player组件,如下图所示: 也可以在VS2022的工具箱空白处点右键,选择“选择项…”菜单。 在弹出的选择工具箱项窗口中…...
面试经典150题——Day20
文章目录 一、题目二、题解 一、题目 14. Longest Common Prefix Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string “”. Example 1: Input: strs [“flower”,“flow”…...
[SQL开发笔记]AND OR运算符复杂表达式开发实例
结合 AND & OR实例:通过圆括号使用and或or来组成复杂的表达式 目标数据库及表:使用 DRobot数据库,"T_Drobot" 表 假设我们需要查询"T_Drobot" 表,并从"T_Drobot"表中查询选取creator为 "…...
如何将本地 PDF 文件进行翻译
在日常工作和学习中,我们经常会遇到需要翻译 PDF 文件的情况。比如,我们需要将一份英文的技术文档翻译成中文,或者将一份中文的法律文件翻译成英文。 传统上,我们可以使用专业翻译软件或服务来翻译 PDF 文件。但是,这…...
Node.js的readline模块 命令行交互的模块
Node.js是一个非常流行的JavaScript运行时环境,它提供了许多内置模块来帮助我们开发应用程序。其中之一是readline模块,它提供了一种简单的方法来读取用户输入并进行交互。 本文将详细介绍readline模块的API和使用案例,并附有代码注释。 re…...
前沿重器[36] | ACL23-基于检索的大语言模型-报告阅读
前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经…...
2023秋招笔试算法Python3题解
诸神缄默不语-个人CSDN博文目录 签两方了,感觉秋招已经结束了,所以发布一下之前写的笔试编程题题解。 不全。可能有些题我会继续补。 不保证能过。 后续依然有可能继续刷算法题,但是就另外专门写博文来解析了。 打码是因为原则上其实是不让公…...
uniapp--点击上传图片到oss再保存数据给后端接口
项目采用uniapp与uview2.0组件库 --1.0的也可以参考一下,大差不差 一、项目要求与样式图 点击上传n张图片到oss,然后点击提交给后端 二、思路 1、打开上传按钮,弹出框内出现上传图片和提交按钮 2、点击上传图片区域,打开本地图…...
创建Secret(使用kubectl)
创建Secret(使用kubectl) 假设某个 Pod 需要访问数据库。在您执行 kubectl 命令所在机器的当前目录,创建文件 ./username.txt 文件和 ./password.txt 暂存数据库的用户名和密码,后续我们根据这两个文件配置 kubernetes secrets。…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
