现在,我在db中列出了5个学生(示例),ID依次为1,2,3,4,5。
在我的代码中,我希望通过使用不同的功能以多种不同的方式对待这些学生。
例如,学生ID 1将使用函数名称'Call_History()'
学生2将用于功能名称'Get_Record()'
与其他人相似。
这是我的代码:
if(studentID == 1) Call_History();
else if(studentID == 2) Get_Record();
else ....
所以,对于 10名学生的列表,我必须编写代码,如果......其他10次。我想在这里问的是:有没有办法(除了使用开关)帮助我编写代码更灵活?
答案 0 :(得分:2)
使用以下设计模式之一
http://en.wikipedia.org/wiki/Template_method_pattern 要么 http://en.wikipedia.org/wiki/Strategy_pattern
答案 1 :(得分:2)
此示例位于C#中,但其他语言(如Java)中也有类似的数据结构。
您可以使用Dictionary<int, Action>
初始化所有操作/ ID组合。
然后执行以下操作:
if (actionMap.ContainsKey(studentId))
actionMap[studentId]();
答案 2 :(得分:1)
使用字典
Dictionary<int, delegate> allStudentsAndActions=new (...);
allStudentsAndActions.Add(1, FirstMethod);
...
allStudentsAndActions.Add(N, OtherMethod);
答案 3 :(得分:0)
由于您需要根据学生的ID来确定逻辑,您必须在某处编写代码片段,您不能跳过它。我认为工厂模式之一也可以帮助您使代码更好,更易于维护