@Urukhayy

Узко специализированно или широко?

Как лучше писать функции для небольшого количества объектов?

Приведу яркий пример: У нас есть 3 яблока разной породы. Пользователь выбирает одно из яблок и ему должен быть показан диалог - "Покупка яблока породы N....... Желаете приобрести?", в диалоге 2 кнопки - "Да" и "Нет". Обработка результата диалога происходит в отдельной функции.

Так вот. Делать общую структуру для обработки всех диалогов, которая включает в себя распознавание породы яблок уже внутри структуры, или для каждой породы свою структуру?

Как будет выглядеть случай 1 (общая структура):
function test(){
// Для начала нужно определить породу яблок. В текущей задаче это решаемо только циклом
for(var i in apples)
{
    switch(apples[i].type)
    {
        case 1: // обработка для сорта 1
        case 2: // обработка для сорта 2
        case 3: // обработка для сорта 3
    }
}
}


Как будет выглядеть случай 2 (индивидуальная структура):
function test(type){ // порода яблока приходит сразу
// обработка для сорта
}


Суть в том, что порода яблока для второго случая хранится не в объекте apples, а по глобальным переменным (var sort1,sort2,sort3), и когда пользователь выбирает яблоко мы напрямую посылаем глобальную переменную.
  • Вопрос задан
  • 2360 просмотров
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
Убирайте долой глобальные переменные, это ваша главная проблема.
Ответ написан
Комментировать
@fr33zy
Самое простое решение, на мой взгляд, использовать список обработчиков, что-то вроде:

var appleHandler = {};
appleHandler.antonovka = function antonovkaHandler() {
  // Обрабатываем
}


В нужный момент просто получаем обработчика и вызываем его.
Ответ написан
Комментировать
@Mercury13
Программист на «си с крестами» и не только
Это шаблон проектирования «стратегия», и по-хорошему реализуется в виде обработчиков или виртуальных функций.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы