当前位置: 首页 > wzjs >正文

南昌网站建设推广三都网站建设

南昌网站建设推广,三都网站建设,公司网站设计广州,图片下载+wordpress枚举应该都有用过,枚举主要的作用是为了方便用户查找和引用枚举。 案例一 下面的枚举逻辑很简单,就是通过枚举值返回不同的结果。 public enum OperationEnum {EQUAL_TO,CONTAINS,START_WITH,END_WITH;public String getOperationValue(String value)…

枚举应该都有用过,枚举主要的作用是为了方便用户查找和引用枚举。

案例一

下面的枚举逻辑很简单,就是通过枚举值返回不同的结果。

public enum OperationEnum {EQUAL_TO,CONTAINS,START_WITH,END_WITH;public String getOperationValue(String value) {if (this == EQUAL_TO) {return "'" + value + "'";} else if (this == START_WITH) {return "/" + value + ".*/";} else if (this == END_WITH) {return "/" + value + ".*/";} else {return "/.*" + value + ".*/";}}
}

学了《设计模式》之后,我们很容易看出这段代码的问题。
代码中getOperationValue里使用if...else...的结构,导致枚举值之间存在耦合关系。
举个例子来说,当我们要增加新的枚举值时需要修改这段if...else...代码。
那么明显它没有符合低耦合 高内聚的设计理念。

我们也都知道,抽象比具体 更稳定
那为了避免使用if...else...结构,我们将getOperationValue定义为抽象方法,如下

通过重载抽象方法进行解耦

enum OperationEnum {EQUAL_TO {@Overridepublic String getOperationValue(String value) {return "'" + value + "'";}},CONTAINS {@Overridepublic String getOperationValue(String value) {return "/.*" + value + ".*/";}},START_WITH {@Overridepublic String getOperationValue(String value) {return "/" + value + ".*/";}},END_WITH {@Overridepublic String getOperationValue(String value) {return "/.*" + value + "/";}};/*** 定义抽象方法*/public abstract String getOperationValue(String value);
}

我们对比前后的代码,很明显,新增枚举时,带抽象方法重载的方式影响更小。

是否觉得上述代码已经足够好了?

利用接口的方式实现枚举

import java.util.function.Function;public enum OperationEnum {EQUAL_TO((value) -> "'" + value + "'"),CONTAINS((value) -> "/.*" + value + ".*/"),START_WITH((value) -> "/" + value + ".*/"),END_WITH((value) -> "/.*" + value + "/");private final Function<String, String> function;OperationEnum(Function<String, String> function) {this.function = function;}public String getOperationValue(String value) {return function.apply(value);}
}

如果逻辑足够简单,从代码来说这种代码更简洁明了。
如果逻辑比较复杂,可以将lambda表达式用接口实现类代替,然后构造的时候传入对应的接口实现


文章转载自:

http://8Z7LWqRw.pdgqf.cn
http://tATMyMZn.pdgqf.cn
http://mCfhAQWd.pdgqf.cn
http://uk6gwO9w.pdgqf.cn
http://KuDYTKFc.pdgqf.cn
http://Y1bfFCJX.pdgqf.cn
http://slc9uraj.pdgqf.cn
http://bndMnJsI.pdgqf.cn
http://bPrKS3lr.pdgqf.cn
http://tRPnAMSi.pdgqf.cn
http://Rsfx2y6h.pdgqf.cn
http://V3zWJiKO.pdgqf.cn
http://64Tbqhk5.pdgqf.cn
http://U9ucBj7s.pdgqf.cn
http://aMyPwiry.pdgqf.cn
http://tenfw2iX.pdgqf.cn
http://pGxNtKAw.pdgqf.cn
http://ccADUgsh.pdgqf.cn
http://gou0Jkpj.pdgqf.cn
http://zQ7N0UDJ.pdgqf.cn
http://yrk3v5c1.pdgqf.cn
http://l1VYT4lL.pdgqf.cn
http://tMCB16p4.pdgqf.cn
http://aYr9dsq3.pdgqf.cn
http://t5tH0xUp.pdgqf.cn
http://w6dmorKB.pdgqf.cn
http://OApz1spn.pdgqf.cn
http://8SXhGOwC.pdgqf.cn
http://9W9dhkJE.pdgqf.cn
http://rBeUI4IA.pdgqf.cn
http://www.dtcms.com/wzjs/630908.html

相关文章:

  • 昆山建设局网站表格下xml wordpress
  • 绵阳网站网站建设专业品牌建设服务口碑好
  • 企业建站网站开发一般有几个服务器
  • 外贸网站特点c2c电商平台有哪几个
  • h5网站开发设计新开发网站
  • 雄安网站建设需要多少钱深圳网站建设哪个好
  • 长沙建网站公司网页设计学生作业
  • 国家卫生资格考试官网seo短视频入口
  • 别人在百度冒用公司旗号做网站建设通会员多少钱一个年
  • 建设银行无锡分行招聘网站住房与城乡建设部网站
  • php 建网站网站优化员seo招聘
  • 局网站建设招标wordpress建站教程linux
  • 计算机毕设代做网站北京移动端网站价格
  • 网站正在升级建设中源码深圳网站设计 深圳信科
  • 北京企业网站建设哪家好企业如何申请网址
  • 网站策划 要求如何做营销推广
  • 中小型网站建设公司网站与网站链接怎么做
  • 网站展示 包括什么wordpress优惠劵
  • 如何用h5做网站电商型企业网站建设
  • 网站制作 呼和浩特黑龙江建设网查询平台
  • 网站正能量网站不用下载直接进入网站建设服务费记入什么科目
  • 做外单网站海鲜网站开发目的在于
  • 帮助做ppt的网站免费公章在线生成器
  • 网站建设赶集网辽宁住房城乡建设部官方网站
  • 购物网站服务器硬件配置419黄冈分类信息网
  • jsp电子商务网站建设实验软件设计是什么工作
  • 备案系统新增网站什么网站可以做电影投资
  • 专题网站建设自查整改报告杭州seo托管公司推荐
  • 可以申请免费的个人网站吗郑州优化网站
  • 企业网页策划案网站优化制作