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

时间:2013-04-09 08:15:56

标签: c# design-patterns

现在,我在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次。我想在这里问的是:有没有办法(除了使用开关)帮助我编写代码更灵活?

4 个答案:

答案 0 :(得分:2)

答案 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来确定逻辑,您必须在某处编写代码片段,您不能跳过它。我认为工厂模式之一也可以帮助您使代码更好,更易于维护