java学习:用Map替代众多的if-else

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

#2014.11.13#

问题情景:根据标签对字符串做出相应的处理,输入格式:{标签}{目标字符串}

大写化 String1

小写化 String2

逆序 String3

....

functionN StringN

通常用if else的实现方式大致如下:

while(读取行) {

将每一行的输入拆分,然后存入String function,String str;

if ( function.equals("大写化")){

//调用函数处理str

}else if ( function.equals("小写化")){

//调用函数处理str

}else if(){

}

...

}

这样写很不痛快而且代码难看,使用Map的映射能力可以解决这个问题,基本思路是使用Map将<处理标签>和相应的<类>建立映射关系,这样的话Map.get(<标签>)就是那个类了,接下来调用方法即可解决Map.get(<标签>).getResult(str);

实现方式如下:

首先定义一个接口

public interface Type {

String getResult (String str);

}

接下来继承这个接口实现各种功能类

public class functionA implements Type{

@Override

public String getResult ( String str ){

//A函数的功能

}

}

.....同样的functionB,functionC ......

以上是一些准备工作,一开始的 if-else 部分转化如下:

Map<String,Type> map= new HashMap<String,Type>();

map.put("大写化",new functionA());

map.put("小写化",new functionB());

map.put("逆序", new functionC());

.......

while(读取行){

将每一行的输入拆分,然后存入String function,String str;

map.get( function ).getResult( str );

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航