码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-09-13 20:01:20      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:

#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 );
}

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

标签:

原文地址:http://www.cnblogs.com/just84/p/4805379.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!