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

Все началось в 1994 году, когда четыре компьютерных ученых Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес опубликовали культовую книгу «Шаблоны проектирования: элементы объектно-ориентированного программного обеспечения».

Содержание книги говорит о способах решения общих специфических проблем, которые постоянно возникают в мире разработки программного обеспечения. Книга стала большим успехом, и четыре автора стали известны как «Банда четырех» или «GoF», от английского Gang of Four.

Почему шаблоны проектирования важны

Мы все часто чувствуем себя в тупике при переходе от идеи к программной реализации.

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

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

Общие проблемы

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

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

Следовательно, дизайн — это первый важнейший шаг к созданию элегантного решения.

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

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

Шаблоны проектирования JavaScript

«Банда четырех» ссылается в своей книге на шаблоны проектирования с объектно-ориентированными языками программирования, говоря о классах, объектах и интерфейсах.

Хотя это было естественно для Java с момента ее создания, большинство классических шаблонов проектирования стали доступны в JS только с появлением ES6. Он представил классы и другие объектно-ориентированные функции в JavaScript, и теперь вы можете элегантно реализовать большинство шаблонов проектирования на JS.

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

Три группы шаблонов проектирования в программировании

В книге «Банды четырех» представлены 23 шаблона проектирования, которые можно разделить на три группы — порождающие, структурные и поведенческие в соответствии с их назначением.

  • ** Порождающие ** - ориентированы на создание объектов.
  • ** Структурные ** - имеют дело с составом классов или объектов.
  • ** Поведенческие ** - касается взаимодействия между классами и объектами и разделения индивидуальных обязанностей.

Порождающие шаблоны дизайна

Они имеют дело с методами создания объектов. В Javascript у нас есть несколько способов создания объекта. Мы можем адаптировать общие шаблоны проектирования, чтобы упростить создание объектов, например ** Factory **, ** Constructor **, ** Builder **, ** Singleton. **

Структурные шаблоны проектирования

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

Поведенческие шаблоны дизайна

Эти шаблоны проектирования предоставляют методы для оптимального взаимодействия с несколькими несвязанными объектами, обеспечивая тем самым разделение ответственности задействованных объектов. Распространенными типами шаблонов поведенческого проектирования являются ** Стратегия **, ** Наблюдатель ** и ** Цепочка ответственности **.

Примеры шаблонов дизайна на каждый день

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

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

  • Чтобы быстро приготовить разнообразные завтраки, купи универсальную микроволновку - Порождающий
  • Чтобы проснуться рано утром, используй будильник - Поведенческий
  • Чтобы перейти реку, построй мост - Структурный

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

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

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

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

Шаблоны проектирования при правильном использовании в правильных сценариях действуют как адаптеры в ваших проектах.

Станьте лучшим разработчиком

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

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

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

Заключение

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

Теперь перейдем к первому JavaScript Шаблону Проектирования - Строитель (Builder).

Получите мою бесплатную электронную книгу, чтобы подготовиться к техническому собеседованию, или начните Учить Full-Stack JavaScript