我正在尝试找出一种更优雅的方式来处理我正在处理的小程序的用户输入。没有什么是坏的,我知道我可以处理它,但它涉及重用大量代码以及我认为可能不必要的单独函数。
我要求用户输入可以改变输入的内容。所以在第一次通过时,只有一个选项。在第二关,有4个选项。下一个传球可以是4个选项或7个选项。等
所以,如果我说:
case ConsoleKey.D1:
function1();
break;
case ConsoleKey.D2:
function2();
break;
然后按1,我总是打电话给功能1.但我并不总是需要将功能1作为选项。但我也不想让用户之间存在差距,例如:
(1) call func1()
(2) call func2()
(5) call func5()
(8) call func8()
我宁愿按顺序输入并根据所需的功能分配一个功能,例如:
(1) call func1()
(2) call func4()
(3) call func6()
(4) call func9()
这有意义吗?任何帮助,将不胜感激。谢谢!
答案 0 :(得分:2)
我的2美分。
public interface IControlBehavior {
void Activate(int input);
}
public class FirstPhase : IControlBehavior {
void Activate(int input) {
//call function1 with 1, function 2 with 2...
}
}
public class SecondPhase : IControlBehavior {
void Activate(int input) {
//call function1 with 1, function 5 with 2...
}
}
您甚至可以确保每个阶段的输入都是正确的。 经验法则是,无论何时你想重构一个开关,你都应该想到“继承”!