把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判断参数。我的问题是此处使用多态有什么实际意义还是多此一举。