Задать вопрос

Приведите пример задачи на JavaScript, в которой не обойтись без использования паттерна?

Добрый день,
изучаю паттерны, но сложно придумать не имея большого опыта в какой реальной задаче их можно использовать. Интересуют конечно самые распространенные паттерны (Синглтон, Фабрики, Декоратор и тд).

Пожалуйста приведите пример постановки реальной задачи. Можно в скобках указать какой из паттернов нужно применить для её решения.
Заранее спасибо!
  • Вопрос задан
  • 1404 просмотра
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Паттерны это не про решение задачи. Это про решение задачи типовым и понятным другим программистом методом. Паттерны решают проблемы не типа «сделать кнопочки», а типа «сделать так, чтоб через год не хотелось убить себя об стену и не надо было переделывать все с нуля».
Ответ написан
Комментировать
copist
@copist
Empower people to give
Шаблоны проектирования и шаблоны программирования - это описания лучших вариантов решений для типовых задач. Многие тыщи программистов уже решали такие типовые задачи и у большинства получалось добиться хорошего результата приблизительно одинаковым способом.

Под задачей иногда подразумевается глобальные:
как сделать так, чтобы второй программист понял мой код (например, MVC/MVVM - разделение кода на логику и представление, шаблонизация Twig/Jade, фреймворки)
как сделать так, чтобы мы кодили быстро (фреймворки, деление кода на фронт/бак, шаблонизация Twig/Jade, доступ к данным через ORM/ADO, препроцессоры LESS/SCSS/Stylus)
как сделать так, чтобы мы к себе смогли легко включить сторонний модуль или наш код могли подключить к чему-нибудь (плагины, модули)

Средне-масштабные
как сделать так, чтобы по возможности было меньше обращений на сервер (кэш, lazy init, client-side validation, rich internet application)
как обрабатывать долгие запросы (очередь, асинхронная обработка, comet, websocket, long polling)
что делать, если интерфейс "замёрз" (показать spinner, вывести "сожалелку :(")
как сделать мега-форму из 50 полей (сделать пошагового мастера)
как показать что-то очень важное (popup, модальное окно)

Мелкие
как сделать так, чтобы интерфейс реагировал на поведение пользователя (события)
как сделать так, чтобы код выполнялся периодически (таймеры, интервалы)
как сделать так, чтобы у меня скрипты JS подключались по мере необходимости и только один раз (requirejs)
как сделать так, чтобы у меня одинаковая задача запускалась только если предыдущая уже закончилась (например, не посылать запрос AJAX, если предыдущий не отработал; не анимировать два раза один и тот же объект DOM)

Вообще невозможно сказать, что каждая из них решается комбинацией синглотонов. Или фабрик. Там куча-мала, просто завал мелких фрагментиков кода, блоков логики, в каждом из которых что-то было сделано по шаблону.

Вот тут на примерах на Javascript с объяснением habrahabr.ru/post/132472
Ответ написан
Комментировать
orlov0562
@orlov0562
I'm cool!
Сложно поставить такую задачу, в том контексте в котором ты её хочешь увидеть. Паттерны - это "стандартное" и часто эффективное решение какой-то насущной задачи. Под "стандартным" я подразумеваю, что другие программисты понимают о чем ты говоришь, просто услышав название паттерна. Тем не менее, любой паттерн, можно заменить произвольным кодом решающим ту же задачу, но такой код будет сложнее воспринимать другим людям, и в большинстве случаев, сложнее поддерживать.

Ну, навскидку, рассмотри этот редактор для комментариев и ответов. У него есть кнопки. Вот задача: сделать единый интерфейс для работы с кнопками. Конечно, можно наговнокодить тут многое, а можно сделать фабрику.

В общем, нет таких задач которые решаются исключительно паттернами.
Ответ написан
gadfi
@gadfi
https://gamega.org
у вас не верное представление о патернах.
даже не прочитав ни одной книги о них, рано или поздно вы к ним придете своим умом (не ко всему конечно)
самая главная их задача как ни странно не относится к программированию в смысле кодинга)) скорее в первую очередь они нужны чтобы разработчики понимали друг друга.
само решение той или иной задачи было придумано до банды четырех и не по разу))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы