2013-04-09 3 views
1

Теперь у меня есть список из 5 учеников (пример) в db с идентификаторами 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 раз. Я хочу спросить здесь: есть ли какой-либо способ (кроме использования переключателя), чтобы помочь мне написать код с большей степенью гибкости?

+0

'switch (studentID) {case 1:/* do something */break; case 2:/* и т. д. * /} ' – Nolonar

+1

@Nolonar Он уже писал * кроме использования переключателя * – MarcinJuraszek

+0

Вместо этого вы должны задать вопрос на [CodeReview] (http://codereview.stackexchange.com/). Эти парни любят такие вопросы :) –

ответ

2

использование одного из следующих шаблонов проектирования

http://en.wikipedia.org/wiki/Template_method_pattern или http://en.wikipedia.org/wiki/Strategy_pattern

+0

Как я уже сказал, такая ситуация возникает, когда я должен использовать разные функции и не могу использовать шаблон дизайна для нее. Я думаю, что я должен жить с командой if else. Огромное спасибо. –

+1

Спасибо Нахум. Я применил успех. –

+0

@ Langthang рада помочь. если это действительно был метод, который вы использовали. отметьте его как выбранный ответ. – Nahum

1

использование словаря

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

allStudentsAndActions.Add(1, FirstMethod); 
... 
allStudentsAndActions.Add(N, OtherMethod); 
2

В этом примере в C#, но есть аналогичные структуры данных на других языках, таких как Ява.

Вы можете использовать Dictionary<int, Action>, который инициализируется всеми комбинациями действий/идентификаторов.

Затем сделать что-то вроде:

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

Вы используете 'studentId', чтобы проверить, затем' studentKey', чтобы позвонить. –

+0

Спасибо, исправлено. :) –

0

Как вам необходимо определить логику на основе ID студента, вы должны написать кусок кода где-то, вы не можете пропустить это. Один из способов, по которым я думаю, это шаблон Factory, также поможет вам улучшить код и поддерживать его.

+0

Да. Я думаю, что я должен жить с командой if else. Большое вам спасибо за вашу помощь. –

Смежные вопросы