Первоначально опубликовано в blog.shams-nahid.com
Шаблоны проектирования — это устоявшиеся решения общих проблем архитектуры программного обеспечения. Как разработчик JavaScript, я сталкиваюсь с множеством проблем, и шаблоны проектирования предназначены для решения многих из них. Некоторые из очень популярных библиотек также используют эти шаблоны проектирования. Здесь я перечислил несколько шаблонов проектирования, которые я использую с различными библиотеками JavaScript.
Шаблон проектирования наблюдателя
- МобХ
Мы используем шаблоны проектирования наблюдателя в библиотеке управления магазином MobX. С MobX мы рассматриваем тему, которая со временем будет меняться. Есть метод пары подписчиков, который будет запускаться при смене темы.
Шаблон разработки команд
- Транзакции БД
Шаблон проектирования команды обеспечивает операцию отмены. Это применимо, когда нам нужно отменить какую-то операцию после выполнения операции. Мы используем этот шаблон проектирования в транзакциях базы данных. В транзакциях базы данных, если в какой-либо из операций возникает сбой, мы отменяем каждую из предыдущих операций.
Шаблон проектирования прокси
- Кэширование в маршруте и БД
В традиционном механизме кэширования мы сначала проверяем, есть ли уже данные или нет. Если данные уже есть в кеше, мы возвращаем данные из кеша и не выполняем операции. В противном случае извлеките/соберите данные, обновите кэш данными, а затем верните данные. Эта архитектура представляет собой шаблон проектирования прокси.
Шаблон оформления фасада
- Оболочка для вызова API (Axios/fetch)
Для операций выборки данных, от пользовательского интерфейса до API, мы можем использовать любую популярную библиотеку, например, axios или fetch. Теперь, чтобы сделать библиотеку Axios или fetch абстрактной, мы использовали модуль-оболочку. Эта оболочка скрывает функциональные возможности библиотеки. Это полезно, если в будущем мы захотим изменить библиотеку и не хотим изменять высокоуровневые коды.
- Платежный модуль (полоса/Paypal)
Другим примером могут быть платежные модули, обертка может быть полезна, если есть возможность изменить модуль. Например, прямо сейчас мы используем Stripe, но, возможно, в будущем мы будем использовать Paypal.
Одноэлементный шаблон проектирования
- Реагировать на хуки
Формы React hook имеют функцию watch
, где мы можем наблюдать за изменениями в определенном поле формы. Нашими требованиями было наблюдать за изменениями вне формы. В данном случае нам нужно, чтобы наблюдатель извлекался из формы. Но получение наблюдателя от крючка-от заставляет форму инициироваться каждый раз.
Таким образом, в этом случае мы используем шаблон singleton в форме ловушки, поэтому он не будет инициироваться более одного раза и предоставлять наблюдателя из объекта, инициированного в первый раз.
Шаблон нулевого объекта
- Исходное состояние Redux Toolkit
В наборе инструментов redux, когда нам нужно получить данные из API, мы объявляем начальное состояние. Это начальное состояние является запасным вариантом фактических данных. Это позволяет приложению не ломаться и не давать сбой до тех пор, пока фактические данные не будут получены и состояние не будет обновлено.