干掉if else

思科—OSPF多区域配置实验 实验目的:配置OSPF多区域,使得不同网段的PC互相ping通。 网络拓扑如下: R0的配置 Router>en Router#conf t Router(config)#int g0/1 Router(config-if)#ip add 192.168.1.1 255.255.255.0 Router(config-if)#no shut Router(config-if)#exit Router(config)#int g0/0 Router(config-if)#ip add 192.168. 阅读详情

代码中太多if else。干掉多重if else的两种方式。虽然知道怎样去除,但是实际开发中衡量使用哪种异或还是使用if else本身

最近有种武器很多但是不知道跟不同对手打该用啥感觉!!! emmmm

一、枚举

Integer level = 1;
		if(level == 1){
			System.out.println("1 do something...");
		}else if(level == 2){
			System.out.println("2 do something...");
		}else{
			System.out.println("no catch");
		}

这种情况可以改为枚举方式。既简单又赋予了1、2等业务上的含义。

public enum LevelEnum {

	normal(1){
		@Override
		public void action() {
			System.out.println(value + "do something....");
		}
	},vip(2){
		@Override
		public void action() {
			System.out.println(value + "do something....");
		}
	};
	int value;
	LevelEnum(int value){
		this.value = value;
	}
	
	public abstract void action();
	
	public static LevelEnum getEnumByValue(int value){
		for (LevelEnum level : values()) {
			if(value == level.value){
				return level;
			}
		}
		return null;
	}
}
LevelEnum levelEnum = LevelEnum.getEnumByValue(level);
		levelEnum.action();

二、策略模式

1、定义接口

public interface Level {
	
	public void action();
}

2、定义不同的实现

public class VipLevel implements Level{

	@Override
	public void action() {
		System.out.println(VipLevel.class.getSimpleName());
	}
}


public class NormalLevel implements Level{

	@Override
	public void action() {
		System.out.println(NormalLevel.class.getSimpleName());
	}
}

3、定义level与类的关系

private static Map<Integer,Level> map = new HashMap<Integer,Level>(4);
	static {
		map.put(1, new NormalLevel());
		map.put(2, new VipLevel());
	}

4、定义策略类,当然这里完全也可以不用继承Level;

public class StrategyLevel implements Level{

	private Level level;
	public StrategyLevel(Level level){
		this.level = level;
	}
	@Override
	public void action() {
		level.action();
	}
}

5、使用方式

public class Test2 {

	
	private static Map<Integer,Level> map = new HashMap<Integer,Level>(4);
	static {
		map.put(1, new NormalLevel());
		map.put(2, new VipLevel());
	}
	public static void main(String[] args) {
		Integer level = 1;
		StrategyLevel strategyLevel = new StrategyLevel(map.get(level));
		strategyLevel.action();
	}
}

 

构建栅格地图matlab代码 1 使用MATLAB实现地图栅格化 效果图如下所示 图1 ... 阅读详情

相关推荐

ROS2新手必看:5分钟搞定Gazebo机器人仿真环境搭建(含避坑指南)

本文为ROS2新手提供了在Gazebo中快速搭建机器人仿真环境的详细指南。内容涵盖ROS2与Gazebo的协同架构理解、基础环境配置、机器人模型构建、传感器集成以及环境创建,并包含实用的避坑指南和调试技巧,帮助开发者高效掌握物理仿真技术。

weixin_29100927的博客 430

策略模式(如何干掉 if else)

策略模式 1.介绍 策略模式定义了一系列的算法,并将每一个算法封装起来,使每个算法可以相互替代,使算法本身和使用算法的客户端分割开来,相互独立。 策略模式基于的一种开闭原则 开闭原则:     对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。    ...

zrqsyh的博客 6921

SAP交货单增强字段更新实战:手把手教你用BAPI_OUTB_DELIVERY_CHANGE和EXTENSION2参数

本文详细解析了如何使用BAPI_OUTB_DELIVERY_CHANGE和EXTENSION2参数实现SAP交货单增强字段的更新。从增强点SMOD_V50B0001的定位到字段落表的全流程,提供了ABAP代码示例和常见问题排查方法,帮助开发者高效完成交货单自定义字段的集成开发。

weixin_42525637的博客 452

这才是“干掉 if else”的正确姿势!

先说一点,我干不掉 if else,代码中必然会存在 if else。因为代码本身就是由顺序、分支、循环构成的(Java 中没有 goto)。分支是业务逻辑中天然存在的,所以,我给“干掉...

xmt1139057136的专栏 949

提示工程架构师干货:AI上下文工程在社交媒体舆情溯源中的应用

在舆情溯源中,“上下文”不是单一的“文本内容”,而是多维度、多源的信息集合溯源时间:从事件爆发到找到源头,只用了24小时(传统方法需要3-5天);溯源准确性:100%(通过人工验证确认);后续行动:品牌X发布了澄清声明,揭露了品牌Y的恶意行为,舆情在48小时内平息。社交媒体舆情溯源是一个“复杂的系统工程”,需要结合数据、模型、上下文理解。AI上下文工程的出现,让我们从“被动应对”转向“主动溯源”,从“模糊判断”转向“精准分析”。

Java大师兄的博客 812

基于 Simulink 的 PV 光伏阵列功率发电系统仿真 Matlab

其中直流侧电压需要与光伏电池组件匹配,交流侧电压则需要与配电系统匹配,开关频率一般在几千赫兹左右,需要保证在一定范围内。根据实际需求,我们还可以通过增加负载,以及调节光照强度等方式,模拟不同的情况下系统的响应和性能表现。经过设置参数和各部分之间的传递和控制后,我们可以开始进行模型仿真。在仿真前,我们需要确定仿真时间和步长,并对整体模型进行编译。在建立完毕整体模型框架后,我们需要为每个组件设置参数,并进行传递和控制。首先,我们需要建立一个整体的模型框架,包括各个组件之间的关系和控制器的作用。

学习使你进步。 1129

手把手教你干掉if else

今天想来跟大家讨论一下怎么干掉if else。已经工作的人可能深有体会:没有什么是if else搞不掂的,如果有,那就再嵌套一层。大多数人都是做业务开发的,if else是避免不了的,但...

dabaoshiwode的博客 777

PrimeTime low power-多电压设计流程(2)

get_power_switches`、`get_supply_nets` 和 `get_supply_ports` 命令的操作方式类似,并具有类似的命令选项。PrimeTime 根据 UPF 命令构建电源供应网络,包括 create_power_domain、create_supply_net、create_supply_set、create_supply_port、set_domain_supply_net 和 connect_supply_net。电源集句柄是为电源域隐式创建的一个抽象电源集。

QRBQ 712

如何干掉烦人的if-else

1、背景 在你的项目中是否可以看到成堆if-else语句呢?我们来想象一下一个支付场景,用户下单时需要判断当前订单是否为优惠或团购或促销等,那你首先想到的是根据当前订单类型来匹配所有的订单类型,满足哪一种就走对应的处理是吗?就比如下面这样 这样做是可以实现功能,但我上架了新的活动这时候有新类型订单又该怎么办呢?当然你可以再判断一次不就是嵌套一次if-else吗?在一个大型项目中这样做是致命的,不仅仅代码冗余,而且耦合极高,我这里还只是用伪代码示例,真实开发中可能有几十个甚至几百个if-else,.

润青 914

(ICLR 2025)【源码讲解+复现】TIMER-XL: Long-Context Transformers for Unified Time Series Forecasting

本文提出了一种统一的多变量时序预测模型Timer-XL,其核心创新包括:1)采用自回归解码器架构,将多变量时序预测统一为next-token预测问题;2)设计TimeAttention机制,通过相对位置编码和因果掩码捕获时序位置和变量间交互;3)支持长上下文预训练以提升零样本迁移能力。模型架构包含嵌入层、时间感知注意力块和预测头,采用MSE损失进行端到端训练。实验表明该方法在多种时序任务上表现优异,特别是在长跨度预测和少样本场景下。代码实现提供了完整的模型定义、数据加载和训练流程,支持自定义配置参数。

1146

C#的GDI+绘图详解

/消除锯齿 或 AntiAlias。// 1.在窗体或控件的Paint事件中,用PaintEventArgs e 创建绘图对象 ---- 控件或窗体重绘时。//为控件创建绘图对象。//--------------------以上方法三选一。//2.创建绘图对象 panel1中绘图。

weixin_50920631的博客 3457

干掉项目中杂乱的 if-else,试试状态模式,这才是优雅的实现方式!

点击关注公众号,Java干货及时送达来源:https://zhenbianshu.github.io接上文玩转 Java 动态编译,实现了 Java 代码的动态编译后,接下来就要填补上文中...

Java技术栈,分享最主流的Java技术 610

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

如何简单的干掉if else

直接上代码,熟以致用: //原始代码很多if else public int selectByPrimaryKey(int i) { if(i==1){ return 1; }else if(i==3){ return 3; }else if(i==4){ return ...

阿杜童鞋的博客 1530

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

干掉if-else

干掉if-else前言一、简化else?二、使用三目运算符三、java 8 Optional类 前言 代码里的判断是必不可少的逻辑处理,常见的if-else语句,会让程序变得冗长和臃肿,接下来我们介绍下如何让代码变得更加优雅。 一、简化else? if(id==null){ //新增 }else{ //修改 } 优化后: if(id==null){ //新增 return; } //修改 二、使用三目运算符 if(user==null){ name="lisa"; }else{ name

leiyu6666的博客 214

不吹牛X,我真的干掉了if-else

不吹牛X,我真的干掉了if-else如何才能有很高的扩展性?常规方式如何解决?思考如何干掉if-else?使用策略模式来解决if-else的问题尝试使用Spring来配合策略模式总结:

小鱼吃猫 8136

Spring Boot中如何干掉if else

点击上方“Java之间”,选择“置顶或者星标”你关注的就是我关心的!作者:Java高级架构狮需求这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是...

Java之间 2621

java 去掉大量if else_在Java项目中如何干掉if-else

在Java项目中如何干掉if-else发布时间:2020-11-20 15:03:59来源:亿速云阅读:79作者:Leah在Java项目中如何干掉if-else?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。优化方案 1:提前 return,去除不必要的 else如果 if-else 代码块包含 return 语句,可以...

weixin_30211217的博客 1853

在 Spring Boot 中,如何干掉 if else

利用策略模式可以简化繁杂的if else代码,方便维护,而利用自定义注解和自注册的方式,可以方便应对需求的变更。本文只是提供一个大致的思路,还有很多细节可以灵活变化,例如使用枚举类型、或者静态常量,作为订单的类型,相信你能想到更多更好的方法。示例代码:https://github.com/ciphermagic/java-learn/tree/master/sandbox/src/main/java/com/cipher/handler_demo。

IT_1024的博客 579

干掉 if else !

来源:翻译自:Nicklas Millard的文章《Better Software Without If-Else》注:本文并不肯定或者否定哪一种写法,仅仅为大家提供一些其他的编码思路或者...

公众号:Java后端 228

干掉 if else!

if…else控制语句,如果代码里滥用会大大降低代码的可读性、可维护性、可扩展性以及灵活性,进而使整个软件系统造成危害。因为在实际的项目中,需求往往是不断变化的,新需求也层出不穷,因此违反...

公众号:Java后端 259

SpringBoot如何干掉if else?

前言 看到crossover Jie的文章《利用策略模式优化过多if else代码》后受到启发,可以利用策略模式简化过多的if else代码。 需求 这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个概念是根据订单的不同类型做出不同的处理。 项目结构 订单实体 /** * 订单实体 */ public class OrderDTO { privat...

java编程 2383

通过枚举来巧妙干掉if-else

通过枚举来巧妙干掉if-else 场景:当我们接收到一些数据需要对其进行处理时,由于它们来自于不同的渠道(如:腾讯,头条),不同渠道所需的处理方式不同,下面我们写一个简单Demo来实现该的场景。 解决思路 1、首先构建一个 GeneralChannelRule 基础规则抽象类,定义一个抽象方法process(),不同的渠道都需要实现该抽象方法。 public abstract class GeneralChannelRule { public abstract void process(); } 2、编

haohao_ding的博客 270

来吧,用设计模式来干掉 if-else

推荐阅读:阿里P8架构师谈:工作1-5年的Java工程师,怎样提高核心竞争力 阿里架构师直言:“没有实战都是纸上谈兵”!Redis实战PDF分享 每天学四小时:Java+Spring+JVM+分布式高并发,架构师指日可待 前言 物流行业中,通常会涉及到EDI报文(XML格式文件)传输和回执接收,每发送一份EDI报文,后续都会收到与之关联的回执(标识该数据在第三方系统中的流转状态)。 这里枚举几种回执类型:MT1101、MT21...

文章中资料均可获取,有需要请添加yunduoa2019即可 1537

代码优雅之道——如何干掉过多的if else

if else的替代方案

菜鸟逆袭之路 943
上一篇: 小工具:解析Cron表达式的工具
下一篇: 并发编程实战读书笔记(一)线程安全性
MrBack
博客等级 码龄9年 27粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值