java 用枚举替换多if-else

摘要:
1.定义抽象类packagecom。极光设计;/****@作者:shi*@日期:Createdin2020年8月1820:15*@描述:*@修改者:*/publicabstractclassGeneralChannelRule{publicabstractvoidprocess();}2.实现抽象类方法packagecom.polari

1、定义抽象类

packagecom.polaris.design;

/*** @author:shi
 * @date :Created in 2020/8/18 20:15
 * @description:
 * @modified By:
 */
public abstract classGeneralChannelRule {
    public abstract voidprocess();
}

2、实现抽象类方法

packagecom.polaris.design;

/*** @author:shi
 * @date :Created in 2020/8/18 20:18
 * @description:
 * @modified By:
 */
public class JDChannelRule extendsGeneralChannelRule {

    @Override
    public voidprocess() {
        System.out.println("我们大京东!");
    }
}

3、枚举

packagecom.polaris.design;

/*** @author:shi
 * @date :Created in 2020/8/18 20:18
 * @description:
 * @modified By:
 */
public enumChannelRuleEnum {

    /*** 京东
     */JD("JD", newJDChannelRule()),

    /*** 头条
     */TOUTIAO("TOUTIAO", newTouTiaoChannelRule()),

    /*** 腾讯
     */TENCENT("TENCENT", newTencentChannelRule());

    publicString name;

    publicGeneralChannelRule channel;

    ChannelRuleEnum(String name, GeneralChannelRule channel) {
        this.name =name;
        this.channel =channel;
    }

    //匹配
    public staticChannelRuleEnum match(String name) {
        ChannelRuleEnum[] values =ChannelRuleEnum.values();
        for(ChannelRuleEnum value : values) {
            if(value.name.equals(name)) {
                returnvalue;
            }
        }
        return null;
    }

    publicString getName() {
        returnname;
    }

    publicGeneralChannelRule getChannel() {
        returnchannel;
    }
}

4、测试

packagecom.polaris.design;

/*** @author:shi
 * @date :Created in 2020/8/18 20:27
 * @description:
 * @modified By:
 */
public classTest1 {

    public static voidmain(String[] args) {
        String sign = "JD";
        ChannelRuleEnum channelRule =ChannelRuleEnum.match(sign);
        GeneralChannelRule rule =channelRule.channel;
        rule.process();
    }
}

转自:https://mp.weixin.qq.com/s/faQ3yWYM0swfDoEmtwa3nQ

免责声明:文章转载自《java 用枚举替换多if-else》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇cnetos7.3离线安装vscodeinfluxdb安装及配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

为服务中网关的作用

“API网关”核心组件是架构用于满足此些需求。API网关定位为应用系统服务接口的网关,区别于网络技术的网关,但是原理则是一样。API网关统一服务入口,可方便实现对平台众多服务接口进行管控,对访问服务的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或者计费等等。...

backgroundsize

当背景大小值为和时,可以设置两个值,也可以设置一个值。当只取一个值时,第二个值相当于auto,但此处的auto不会将背景图像的高度保持在其原始高度,而是与第一个值相同。此外,如果只取一个值,宽度和高度将相同,这相当于背景大小:80%自动。...

001_Three.js中的跨域问题

】当请求的资源和请求脚本不在同一域中时,将发生跨域。有关详细信息,请参见链接。这是一个需要进一步考虑的问题。它是一个装载机。它加载本地资源。为什么要跨域请求?...

Swift开发中 JSON对象/JSON字符串/Data的互转

本文将介绍常见的转换#pragmark JSON(object)------˃JSON string 1,原生方法//JSON------˃data------˃JSON string letdata=try?JSON序列化。data#pragmark数据------˃JSON(对象)1.本机方法guardletarray=try?[[String:AnyO...

十四、ES开启密码认证

所以我们需要为es head和kibana添加密码认证。4、 为kibana设置密码。1.为kibana配置证书。因为kibana和es之间的连接也需要证书加密通信。mkdir-p/etc/kibana/certscp/etc/selastic search/certs-*/etc/kibana/certs/2.授予kibana主要权限。权限必须为kiban...

nginx做本地目录映射

nginx做本地目录映射有时候需要访问服务器上的一些静态资源,比如挂载其他设备上的图片到本地的目录,而本地的目录不在nginx根目录下,这个时候就需要简单的做一下目录映射来解决,比如想通过浏览器http://ip/image/2016/04/29/10/abc.jpg访问到系统目录/image_data/2016/04/29/10/abc.jpg需要在ngi...