1

现在,我在 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 个学生的列表,我必须编写代码 if...else 10 次。这里我想问的是:有什么方法(除了使用switch)可以帮助我写代码更灵活吗?

4

4 回答 4

2

使用以下设计模式之一

http://en.wikipedia.org/wiki/Template_method_patternhttp://en.wikipedia.org/wiki/Strategy_pattern

于 2013-04-09T08:19:36.287 回答
2

此示例使用 C# 编写,但其他语言(例如 Java)也有类似的数据结构。

您可以使用使用Dictionary<int, Action>所有操作/ID 组合初始化的 a。

然后执行以下操作:

if (actionMap.ContainsKey(studentId))
    actionMap[studentId]();
于 2013-04-09T08:20:29.497 回答
1

使用字典

Dictionary<int, delegate> allStudentsAndActions=new (...);

allStudentsAndActions.Add(1, FirstMethod);
...
allStudentsAndActions.Add(N, OtherMethod);
于 2013-04-09T08:20:03.947 回答
0

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

于 2013-04-09T08:35:09.010 回答