是否有其他方法来编写这段代码以获得更大的灵活性



现在,我在db中有一个5个学生(示例)的列表,id依次为1,2,3,4,5。

在我的代码中,我想通过使用不同的函数以多种不同的方式对待这些学生。

例如,Student ID 1将与函数名'Call_History()'一起使用

Student 2将用于函数名'Get_Record()'

与其他部分相似。

下面是我的代码:
if(studentID == 1) Call_History();
else if(studentID == 2) Get_Record();
else ....

所以,有了10个学生的列表,我必须编写代码,如果…else 10次。我想问的是:有没有什么方法(除了使用switch)来帮助我编写更灵活的代码?

使用下列设计模式之一

http://en.wikipedia.org/wiki/Template_method_pattern或http://en.wikipedia.org/wiki/Strategy_pattern

这个例子是在c#中,但在其他语言中也有类似的数据结构,如Java。

你可以使用用所有动作/ID组合初始化的Dictionary<int, Action>

然后像这样做:

if (actionMap.ContainsKey(studentId))
    actionMap[studentId]();

use dictionary

Dictionary<int, delegate> allStudentsAndActions=new (...);
allStudentsAndActions.Add(1, FirstMethod);
...
allStudentsAndActions.Add(N, OtherMethod);

由于需要根据学生的ID确定逻辑,因此必须在某处编写这段代码,不能跳过它。我认为其中一种方式是工厂模式也将帮助你使你的代码更好和可维护

最新更新