Учебники

Python Design Pattern

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

Чтобы понять шаблон дизайна, давайте рассмотрим пример ниже —

  • Дизайн каждого автомобиля соответствует базовому шаблону дизайна, четырем колесам, рулевому колесу, основной системе привода, такой как сцепление-акселератор и т. Д.

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

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

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

Почему шаблон дизайна важен?

Преимущества использования шаблонов проектирования —

  • Помогает вам решать общие проблемы проектирования с помощью проверенного подхода.

  • Нет двусмысленности в понимании, так как они хорошо документированы.

  • Сократите общее время разработки.

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

  • Может уменьшить количество ошибок в системе, поскольку они являются проверенными решениями распространенных проблем.

Помогает вам решать общие проблемы проектирования с помощью проверенного подхода.

Нет двусмысленности в понимании, так как они хорошо документированы.

Сократите общее время разработки.

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

Может уменьшить количество ошибок в системе, поскольку они являются проверенными решениями распространенных проблем.

Классификация шаблонов проектирования

Шаблоны дизайна GoF (Gang of Four) подразделяются на три категории: креативные, структурные и поведенческие.

Образцы творчества

Шаблоны проектирования творчества отделяют логику создания объекта от остальной системы. Вместо того, чтобы создавать объекты, творческие шаблоны создают их для вас. Шаблоны для творчества включают Абстрактную фабрику, Строитель, Фабричный метод, Прототип и Синглтон

Шаблоны для творчества обычно не используются в Python из-за динамической природы языка. Кроме того, сам язык предоставляет нам всю гибкость, необходимую для создания достаточно элегантного способа, нам редко требуется реализовывать что-либо сверху, например, singleton или Factory.

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

Структурные паттерны

Иногда вместо того, чтобы начинать с нуля, вам нужно создавать более крупные структуры с использованием существующего набора классов. Вот где шаблоны структурных классов используют наследование для создания новой структуры. Структурные шаблоны объектов используют композицию / агрегацию для получения новой функциональности. Адаптер, Мост, Композит, Декоратор, Фасад, Лёгкий вес и Прокси — это Структурные паттерны. Они предлагают лучшие способы организации иерархии классов.

Поведенческие образцы

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

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

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

одиночка

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

Шаблон Singleton используется для,

  • При ведении журнала необходимо реализовать. Экземпляр регистратора является общим для всех компонентов системы.

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

  • Управление подключением к базе данных.

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

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

Управление подключением к базе данных.

Вот диаграмма UML,

Диаграмма UML

class Logger(object):
   def __new__(cls, *args, **kwargs):
      if not hasattr(cls, '_logger'):
      cls._logger = super(Logger, cls).__new__(cls, *args, **kwargs)
return cls._logger

В этом примере Logger является Singleton.

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