首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

把if else代码用多态复建的一些疑问

2012-10-28 
把if else代码用多态重构的一些疑问?现在假设有以下环境需要根据外部传入的一个字符参数,判断调用什么方法

把if else代码用多态重构的一些疑问?
现在假设有以下环境
需要根据外部传入的一个字符参数,判断调用什么方法处理。目前此字符只有A,B2种情况,但是以后参数会经常变化。解决这个问题最容易想到的方法应该就是用IF ELSE或者SWITCH CASE了吧,但是如果以后情况变多,每增加一个判断字符就要增加一个IF或者CASE。
网上查了一下,很多人都推荐使用多态对代码进行重构。示意代码如下。

使用IF ELSE

public class beforeUsePattern {
public void processChar(char c) {
if (c == 'A') {
System.out.println("A");
}
if (c == 'B') {

System.out.println("B");
}
}
}

用多态之后:
public interface HandleChar {
public void processChar();
}

public class HandleA implements HandleChar {

public void processChar() {
System.out.println("A");
}

}

public class HandleB implements HandleChar {

public void processChar() {
System.out.println("B");
}

}

public class MainCall {
HandleChar handleCharA = new HandleA(), handleCharB = new HandleB();

ProcessChar processChar = new ProcessChar();

public static void main(String[] args) {
new MainCall().test('B');
}

public void test(char c) {
if (c == 'A') {
processChar.setHandleChar(handleCharA);
} else if (c == 'B') {
processChar.setHandleChar(handleCharB);
}
processChar.processChar();
}
}


实际上在最后的主函数调用时还是会使用IF判断参数。我的问题是此处使用多态有什么实际意义还是多此一举。

热点排行