1、定义抽象类

package com.polaris.design;

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

2、实现抽象类方法

package com.polaris.design;

/**
* @author :shi
* @date :Created in 2020/8/18 20:18
* @description:
* @modified By:
*/
public class JDChannelRule extends GeneralChannelRule { @Override
public void process() {
System.out.println("我们大京东!");
}
}

3、枚举

package com.polaris.design;

/**
* @author :shi
* @date :Created in 2020/8/18 20:18
* @description:
* @modified By:
*/
public enum ChannelRuleEnum { /**
* 京东
*/
JD("JD", new JDChannelRule()), /**
* 头条
*/
TOUTIAO("TOUTIAO", new TouTiaoChannelRule()), /**
* 腾讯
*/
TENCENT("TENCENT", new TencentChannelRule()); public String name; public GeneralChannelRule channel; ChannelRuleEnum(String name, GeneralChannelRule channel) {
this.name = name;
this.channel = channel;
} //匹配
public static ChannelRuleEnum match(String name) {
ChannelRuleEnum[] values = ChannelRuleEnum.values();
for (ChannelRuleEnum value : values) {
if (value.name.equals(name)) {
return value;
}
}
return null;
} public String getName() {
return name;
} public GeneralChannelRule getChannel() {
return channel;
}
}

4、测试

package com.polaris.design;

/**
* @author :shi
* @date :Created in 2020/8/18 20:27
* @description:
* @modified By:
*/
public class Test1 { public static void main(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的更多相关文章

  1. (转)java enum枚举

    转载自: 原理:http://singleant.iteye.com/blog/686349 应用:http://www.cnblogs.com/happyPawpaw/archive/2013/04 ...

  2. [Java] - 格式字符串替换方法

    Java 字符串格式替换方法有两种,一种是使用String.format(...),另一种是使用MessageFormat.format(...) 如下: import java.text.Messa ...

  3. Java核心 --- 枚举

    Java核心 --- 枚举 枚举把显示的变量与逻辑的数字绑定在一起在编译的时候,就会发现数据不合法也起到了使程序更加易读,规范代码的作用 一.用普通类的方式实现枚举 新建一个终态类Season,把构造 ...

  4. 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题(转)

    写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能 ...

  5. Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

    Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...

  6. java的枚举2

    首先先理解一下java中枚举的本质. java的世界中一切皆是类,下面通过一个例子解释一下enum的本质: package cn.xnchall.enumeration; public class G ...

  7. Java开发知识之Java的枚举

    Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字. 枚举跟C++概念都是一样的.就是特定的常 ...

  8. Java学习--枚举

    枚举类型enum,地位等同于class,interface 使用enum定义的枚举类型,也是一种变量类型,可用于声明变量 枚举的一些特征 1.它不能有public的构造函数,这样做可以保证客户代码没有 ...

  9. Java中枚举的使用

    Java中枚举其实就是静态常量,今天发现枚举里面其实还能加方法,学习了下, 代码如下: package org.pine.test; import java.util.HashMap; import ...

随机推荐

  1. 《Activity显示界面历险记》—说说View的那些理不清的关系

    前言 在Activity显示View的过程中,有一些重要的角色总让人理不清,比如PhoneWindow.DecorView.ViewRootImpl. 也常常有面试题会问到,他们四者之间的关系?创建的 ...

  2. Centos7.7下安装Python3.7 并兼容python2.7

    前言 1.首先来看一下系统版本 [root@python3 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1810 (Core) 2.更新一 ...

  3. EFCodeFirst 数据库连接

    EFCodeFirst 数据库连接 EFCodeFirst 数据库连接 1.NuGet安装实体命令 PM> Install-Package EntityFramework  2.数据库连接字符串 ...

  4. Java网络编程UDP通信原理

    前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信   TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...

  5. 一个基于 Vue3 的开源项目,3个月时间 star 终于破千!

    本文主要是对如何做开源项目的一些思考. 前文回顾: <Vue3 来了,Vue3 开源商城项目重构计划正式启动!> <一个基于 Vue 3 + Vant 3 的开源商城项目> 关 ...

  6. Python工程师学习之旅

    1.Python软件开发基础 1.Linux操作系统2.Docker基础3.Python基础语法4.Python字符串解析5.Python正则表达式6.Python文件操作7.Python 模块8.P ...

  7. 200-Java语言基础-Java编程入门-005 | Java方法定义及使用

    一.方法概述和格式说明 为什么要用方法: 提高代码的复用性 什么是方法: 完成特定功能的代码块 方法的格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {     方 ...

  8. Linux less命令查看文件常用查询方法

    g 跳到文件开头 G 跳到文件结尾 / 往下搜索字符 ? 网上搜索字符 n 执行上一个搜索(/或者?的搜索),例如上一个搜索是使用/搜索的,则继续使用/搜索,即往下搜索结果 N 反向执行上一个搜索(/ ...

  9. HDU_5414 CRB and String 【字符串】

    一.题目 CRB and String 二.分析 对于这题,读懂题意非常重要. 题目的意思是在$s$的基础上,按题目中所描述的步骤,即在$s$中任意选择一个字符$c$,在这个字符后面添加一个不等于$c ...

  10. springboot系列五:springboot整合mybatisplus jsp

    一.用IDEA创建项目 1.添加pom.xml <?xml version="1.0" encoding="UTF-8"?> <project ...