В индустрии программного обеспечения я знаю две вещи с полной уверенностью.

1. Фреймворки всегда меняются

Мы все были там.

Порочный круг:

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

2. Шаблоны проектирования - основа программной инженерии.

Итак, если мы знаем, что фреймворки всегда меняются, то мы должны придерживаться основы отличного программного обеспечения: шаблонов проектирования.

Шаблоны проектирования представляют собой передовой опыт, используемый опытными разработчиками программного обеспечения. Шаблоны дизайна учат думать. Основное преимущество изучения шаблонов проектирования заключается в том, что вы можете находить решения своих проблем намного быстрее, и, если ваши коллеги знают об этих шаблонах, все могут говорить на одном языке. Сейчас я защищаю шаблоны дизайна, но это еще не все. Ничего страшного, если вы не используете все элементы шаблона проектирования, если у вас есть лучшее решение для вашей конкретной проблемы.

Урок истории

Мы можем проследить паттерны проектирования до Кристофера Александра, автора Pattern Language. Александр понял, что определенные методы со временем создают конструкции для достижения эффективности. Именно тогда, благодаря творчеству Александра, начали выходить и другие публикации. Отличный вариант для чтения - это Шаблоны проектирования: элементы объектно-ориентированного программного обеспечения многократного использования. В нем описаны шаблоны, которые обеспечивают решения общих проблем разработки программного обеспечения.

Отличная книга для разработчиков JavaScript написана Адди Османи. Он доступен онлайн здесь.

Командный шаблон

Командный шаблон - отличный шаблон для построения действительно чистых несвязанных систем. Мотивация этого шаблона - выполнить некоторую часть бизнес-логики в какой-то момент в будущем. Причина, по которой я хотел конкретно коснуться паттерна команд, заключается в том, что я считаю его корневым паттерном Redux. Давайте перейдем к шаблону команд, а затем переведем его в Redux.

Шаблон команды состоит из нескольких элементов: Получатель, Команда и Исполнитель.

Получатель

Работа приемников - удерживать нашу бизнес-логику. Получив команду, он знает, как выполнить этот запрос.

Представьте, что мы продаем новую модель Tesla 3. Давайте напишем код, чтобы описать, как это будет выглядеть:

В традиционном шаблоне команд мы инкапсулируем эту информацию в объект.

Команда

Он содержит информацию о вызываемом действии и его обязательных параметрах. Он представлен как объект.

Как видите, команда определяет действие. Это соответствует методу нашего объекта управления. В приведенном выше примере наша примерная команда выполняет действие «организовать просмотр». Он также передает необходимые параметры для создания представления: модель и carId.

Исполнитель

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

Теперь мы можем выполнять команды из любого места в любое время!

Сделайте так, чтобы что-то происходило

Вот и все, теперь как это по сравнению с Redux!

В Redux:

Магазин = Получатель

Магазин создается с помощью «редукторов», описывающих, как изменяется Магазин. Эти редукторы представляют собой чистые функции, которые при вызове возвращают новое состояние, а не вызывают мутации на месте. Это позволяет иметь очень предсказуемый и тестируемый код.

Действие = Команда

Объект действия представляет собой описание команды и параметров, необходимых для выполнения нашего изменения состояния.

Диспетчер = Исполнитель

Разница между vanilla Flux и Redux в том, что отправка - это метод магазина. Магазин может отправлять действия для изменения состояния нашего приложения.

Как видите, очень похоже, правда !? Знание паттерна команд значительно упрощает изучение Redux! Поверьте мне!

Шаблоны проектирования в целом помогают вам оставаться в архитектуре вашего приложения!

Этот пост является частью серии под названием Mastering Meteor and Redux. С программой курса можно ознакомиться здесь. Подпишитесь на меня в Twitter @abhiaiyer, и увидимся в следующей главе.