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

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

1-фабричный шаблон

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

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

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

В этом примере у нас есть два класса, IOSButton и AndroidButton. У нас также есть класс ButtonFactory с методом createButton, который принимает аргументы text и platform и возвращает новый объект кнопки на основе платформы. Метод createButton использует оператор switch, чтобы определить, какой класс кнопок следует создавать в зависимости от платформы.

2-одноэлементный шаблон

Шаблон проектирования Singleton — это мощный принцип разработки программного обеспечения, который гарантирует, что класс может иметь только один экземпляр, предоставляя при этом глобальную точку доступа к этому экземпляру. Есть несколько примеров, когда должен существовать только один экземпляр класса и должно применяться ограничение. Кэши, пулы потоков и реестры должны иметь только один экземпляр.

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

В JavaScript нет концепции приватных конструкторов, поэтому наиболее распространенным способом достижения того же эффекта является использование замыканий и немедленно вызываемых функциональных выражений (IIFE):

3-прототип шаблона

Шаблон прототипа включает в себя создание новых объектов путем копирования существующих объектов, известных как прототип.

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

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

В этом примере мы создаем новый объект person2, копируя прототип person1 с помощью метода Object.create. person2унаследует свойства и методы (если есть) person1.

4-прокси шаблон

Буквальное определение доверенности — это полномочия представлять кого-то другого. В настройке шаблона прокси прокси представляет перед клиентами другой объект, называемый субъектом. Настоящий субъект огражден от прямого взаимодействия с клиентами. Это может быть полезно в различных ситуациях, таких как:

  • Доступ к удаленным объектам, расположенным на другой машине или в другом адресном пространстве.
  • Защита субъекта от несанкционированного доступа клиентов.
  • Откладывание создания дорогостоящего объекта до тех пор, пока он не понадобится.
  • Кэширование результатов запросов к теме для более быстрого доступа клиентов.

Пример шаблона прокси в JavaScript:

В этом примере personProxy — это прокси-объект, обертывающий исходный объект person. При доступе или изменении свойств объекта person через personProxy вызываются методы get и set прокси.

Шаблон 5-строителей

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

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

В Javascript мы можем использовать ключевое слово this для ссылки на текущий экземпляр объекта в каждом методе и реализации цепочки методов. Это означает, что мы можем создать экземпляр объекта, а затем связать с ним методы, всегда получая объект в качестве возвращаемого значения. Это делает процесс создания сложных объектов более эффективным и управляемым.

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

Спасибо за чтение. Я надеюсь, что этот пост будет полезен для вас. Если у вас есть дополнительные вопросы, не стесняйтесь обращаться к нам. Я всегда рад помочь.

Подключаемся:
LinkedIn
Twitter