/ Новости и уроки / 4 шаблона проектирования в веб-разработке

4 шаблона проектирования в веб-разработке

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

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

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

Одиночный дизайн

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

Примером синглтона, который вы, вероятно, используете постоянно, является объект состояния в JavaScript. Если вы работаете с некоторыми интерфейсными средами, такими как React или Angular, вы знаете все о том, как состояние родительского компонента передается дочерним компонентам. Это отличный пример синглетонов в действии, потому что вам никогда не нужно более одного экземпляра этого объекта состояния.

Шаблон дизайна стратегий

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

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

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

Шаблон дизайна наблюдателя

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

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

Декоративный шаблон дизайна

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

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

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

Раньше я думал, что шаблоны проектирования - это сумасшедшие, далеко идущие рекомендации по разработке программного обеспечения. Тогда я узнал, что использую их все время! Некоторые из описанных мною шаблонов используются во многих приложениях, и это поразит вас. Они просто теория в конце дня. Как разработчики, мы можем использовать эту теорию таким образом, чтобы наши приложения легко реализовывались и поддерживались.

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