如何才能避免过多的case子句

问题描述

一个switch语句里面 如果有50个case子句switch(pt){ case A: break; case B: break; .....}以后维护起来肯定很困难,有什么好的方法能避免 或者替换掉?

解决方案

用访问者模式来做就很好.1.把每个条件作成一个类,比如 A条件class A { public void accept(){ //处理逻辑 }}然后把每个条件的处理方法都用一个类来管理.public class CommonVisitor{ public void visit(A a){ a.accept(); } //其他条件的访问方法 public void visit(B b){ b.accept(); }}main里面就这样调用就行.public static void main(Stirng args[]){ CommonVisitor visitor = new CommonVisitor(); //如果是想用A条件,则 visitor.visit(new A());}这样写的好处,以后先加条件的话我只需要定义新的条件类就行,还有就是在CommonVisitor添加新条件的访问方法就行,这样就很好作到一个条件管理一个逻辑
解决方案二:
观察者模式
解决方案三:
将 case 分支分成多个函数,对条件 A,B,C... 和函数做一个 map 映射,然后根据条件使用 java 反射机制调用相应函数。
解决方案四:
只能case A:case B: break;

时间: 2024-10-31 16:22:57

如何才能避免过多的case子句的相关文章

vba语句select case End Select

  一.Select Case语法及参数介绍 Select Case testexpression [Case expressionlist-n [statements-n]] ... [Case Else [elsestatements]] End Select Select Case 语句的语法具有以下几个部分: testexpression 必要参数.任何数值表达式或字符串表达式. expressionlist-n 如果有 Case 出现,则为必要参数.其形式为 expression,ex

VBS教程:VBScript 语句-Select Case 语句_vbs

Select Case 语句根据表达式的值执行几组语句之一. Select Case testexpression[Case expressionlist-n[statements-n]] . . .[Case Else expressionlist-n[elsestatements-n]]End Select 参数testexpression 任意数值或字符串表达式. expressionlist-n 如 Case 出现则必选项.一个或多个表达式的分界列表. statements-n 当 te

asp.net select Case条件语句的使用方法

如果 testexpression 与任何 Case expressionlist 表达式匹配 ,则执行此 Case 子句和下一个 Case 子句之间的语句,对于最后 的子句,则会执行该子句到 End Select 之间的语句,然后控制权 会转到 End Select 之后的语句.如 testexpression 与多个 Case 子句中的 expressionlist 表达式匹配,则只有第一个匹配 后的语句被执行. Case Else 用于指示若在 testexpression 和任何其他 C

vb.net条件分支语句

一.简单If条件语句 使用在称之为分支结构的特殊语句块中的条件表达式控制了程序中哪些语句被执行以及什么样的执行次序执行."If...Then"分支结构在程序中计算条件值,并根据条件值决定下一步执行的操作.最简单的"If...Then"分支结构可以只写在一行:     If Condition Then Statement[Else statement] 注意:"If...Then"分支结构用于给程序添加逻辑控制能力.这里,"Condit

体验Visual C++ 2005的现代语言特性(4)

更好的代码优化 一个好的软件开发者总会想方设法提高软件的执行效率,编译器的编写者是一种特殊类型的开发者,不仅代码要执行效率高,而且由它们生成的代码也必须极有效率.因此,任何一个成功的编译器产品,优秀的后台优化是必不可少的.而在这方面,Visual C++ 2005脱颖而出. Visual Studio .NET 2002和Visual Studio .NET 2003在C++编译器中引入了一些非常好的优化方式,也花了很大气力改善本地代码的执行效率,加入了对Intel Pentium 4 CPU的

Javascript核心读书有感之语句

 这篇文章主要介绍了Javascript核心读书有感之语句,需要的朋友可以参考下     在javascript中,表达式是短语,那么语句(statement)就是整句或命令.正如英文语句以句号结尾,javascript以分号结尾. 表达式计算出一个值,但语句使某件事发生. "使某件事发生"的一个方法是计算带有副作用的表达式.诸如赋值和函数调用这些有副作用的表达式,是可以作为单独的语句的.这种把表达式当做语句的用法也称做表达式语句(expression statement).类似的语句

窥探Swift编程之强大的Switch

之前初识Swift中的Switch语句时,真的是让人眼前一亮,Swift中Switch语句有好多特有而且特好用的功能.说到Switch, 只要是写过程序的小伙伴对Switch并不陌生.其在程序中的出镜率还是比较高档.Switch属于程序的分支语句,Switch的功能便于处理多个分支的较为复杂点的逻辑分支.能用Switch实现的代码都可以使用多个if-else分支语句进行替换. 今天这篇博客就是要看一下Swift中的Switch的不同之处,来总结一下Switch不同的特性.在Swift语言中的Sw

文档元数据——基础信息泄露的源头

本文讲的是文档元数据--基础信息泄露的源头, 前 言 在本文中,我将探讨文档类的元数据,以及为什么它可以作为攻击者的信息来源.比如, 文档的元数据可以收集各种高度敏感性数据,例如用户名,公司中使用的软件,文件共享位置等. 另外,本文还展示了如何找到公司泄露的元数据,以及利用这些收集的元数据创建一个漂亮的Splunk控制界面,为你的公司提供了一种全新数据管理方式,并以非常低的成本提供全程数据管理. 译者注:Splunk是一个可运行于各种平台的 IT 数据分析,日志分析,业务数据分析软件. 什么是文

设计模式 ( 十七) 状态模式State(对象行为型)

设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理.最直接的解决方案是将这些所有可能发生的情况全都考虑到.然后使用if... ellse语句来做状态判断来进行不同情况的处理.但是对复杂状态的判断就显得"力不从心了".随着增加新的状态或者修改一个状体(if else(或switch case)语句的增多或者修改)可能会引起很大的修改,而程序的可读性,扩展性也会变得很弱.维护也会很麻烦.那么我就考虑只修改自身状态的