Зарегистрируйтесь, чтобы продолжить обучение

Шаблоны Проектирования Python: Объектно-ориентированный дизайн

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

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

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

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

Паттерны — это типовое решение для типовой задачи. Они встречаются повсеместно, постоянно создаются новые и переизобретаются.

Некоторые из шаблонов описывают задачи, связанные с небольшим участком кода. Другие, например, определяют способы работы в распределенных системах. Причем последние отвязаны от языка программирования.

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

Как выглядят шаблоны проектирования

В качестве примера рассмотрим паттерн Money. Это объект-значение, который используется для представления денег в программе.

Этот паттерн можно реализовать на Python следующим образом:

class Money:
    def __init__(self, amount, currency='usd'):
        self.amount = amount
        self.currency = currency

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

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

Насколько важно изучать шаблоны проектирования

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

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

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

Выводы

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


Дополнительные материалы

  1. Паттерны без привязки к языку
  2. Антипаттерны

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

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

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

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

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»