欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

使用枚举 Enum 来减少 if else,快来看看适不适合你吧?

程序员文章站 2022-03-11 18:53:40
1. 场景当我需要调用其他其他接口,这个接口某个参数需要根据不同情况来传递不同的固定值如:B接口调用A接口,A接口中需要传递授权码,这个授权码在不同的业务场景不同的手机系统需要传递不同的值,普通的传值方式如下:public void notEnum(NotEnumRequest req){TestReq testReq = new TestReq();//A接口的请求if("android".equals(req.getSysType())){if("a".equals(req.get...

1. 场景

当我需要调用其他其他接口,这个接口某个参数需要根据不同情况来传递不同的固定值
如:B接口调用A接口,A接口中需要传递授权码,这个授权码在不同的业务场景不同的手机系统需要传递不同的值,普通的传值方式如下:

public void notEnum(Request req){
	TestReq testReq = new TestReq();//A接口的请求

	if("android".equals(req.getSysType())){
		if("a".equals(req.getBusinessType())){
			testReq.setSign("android_aaaaaaaaaaa");
		}else if("b".equals(req.getBusinessType())){
			testReq.setSign("android_bbbbbbbbbbb");
		}else if("c".equals(req.getBusinessType())){
			testReq.setSign("android_ccccccccccc");
		}
	}else if("ios".equals(req.sysType)){
		if("a".equals(req.getBusinessType())){
			testReq.setSign("ios_aaaaaaaaaaa");
		}else if("b".equals(req.getBusinessType())){
			testReq.setSign("ios_bbbbbbbbbbb");
		}else if("c".equals(req.getBusinessType())){
			testReq.setSign("ios_ccccccccccc");
		}
	}
	
}

17行 if else 看着贼&*¥#@难受!我就赋个值而已!而且值还是死的。

2.优化

定义enum:

public enum TestEnum{
	A_ANDROID("a","android","android_aaaaaaaaaaa"),
	A_IOS("a","ios","ios_aaaaaaaaaaa"),
	B_ANDROID("b","android","android_bbbbbbbbbbb"),
	B_IOS("b","ios","ios_bbbbbbbbbbb"),
	C_ANDROID("c","android","android_ccccccccccc"),
	C_IOS("c","ios","ios_ccccccccccc");

	private String type;
	private String source;
	private String code;

	TestEnum(String type,String source,String code){
		this.type = type;
		this.source = source;
		this.code = code;
	}

	public static String getCodeByTypeAndSource(String type,String source){
		TestEnum[] enums = TestEnum.values();
		for(TestEnum item : enums){
			if(item.type.equals(type)&&item.source.equals(source)){
				return item.code;
			}
		}
	}

}

简化后的代码:

public void useEnum(Request req){
	TestReq testReq = new TestReq();//A接口的请求
	testReq.setSign(TestEnum.getCodeByTypeAndSource(req.getBusinessType(),req.getSysType());
		
}

本文地址:https://blog.csdn.net/Phone_1070333541/article/details/107942312

上一篇: 佛说:好嘞!

下一篇: 程序员版