Что такое и какая разница между паттернами и алгоритмами?
Привет, начал изучать javascript. Наткнлулся на форумах на понятие паттернов, почитал и понял их как алгоритмы, только готовые решения. Я правильно мыслю? Для чего они?
И еще попрошу у вас, может есть у кого под рукой годная статтейка/видео по маст-хев алгоритмам/паттернам в javascript, что бы было доступно и понятно для новичка?
Паттерн проектирования - повторяемая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
Алгоритм - набор инструкций, описывающих порядок действий исполнителя для достижения некоторого результата.
Статей и книг по первому и второму в интерете предостаточно.
В данном случае точнее говорить "паттерны проектирования", потому что просто патерн может быть чего угодно, это просто шаблон.
Паттерн проектирования дает шаблон решения часто встречаемых однотипных задач, он может быть абстрактым и больше как рекомендация, он не дает точных указаний и порядок действий.
Паттерн от алгоритма отличается так же, как проект дома от пошагового процесса его постройки.
amorpho_jack, Самый простой паттерн проектировани, это паттерн "Фасад", ну еще "Стратегия".
Фасад, заключается в том, что, например у вас есть метод, который принимает 3 параметра. В процессе разработки Вы поняли, что нужны еще параметры, добавили еще парочку, потом еще. Я в своей практике встречал проекты, когда в таком процессе разработки, в метод входило более трех десятков параметров. В таком случае, Вы выделяете модель, полями которой являются Ваши параметры и в метод отдаете уже экземпляр этой модели. Эта модель и называется "Фасадом".
Как видите, в "Фасаде" нет никакого алгоритма, это всего лишь решение в проектировании какой то типовой проблемы.
"Стратегия", это когда динамически, в процессе выполнения программы, Вам нужно в метод, в качестве параметра передавать разные типы объектов. Для этого Вы создаете абстрактный класс (или интерфейс), в качестве входного параметра в метод указываете этот абстрактный тип, а затем все свои типы, которые нужно передавать в метод, наследуете от этого абстрактого типа, в общем типичный пример работы полиморфизма - это и есть "Стратегия".
И опять можете заметить, никакого порядка инструкций здесь нет.