Какие паттерны проектирования ты знаешь? Какие использовал?

Паттернов в районе >40 штук. Паттерны делятся на 3 группы: порождающие, поведенческие, структурные. Например разберем GOF паттерны. Это паттерны «банды 4-х» Приведем паттерны из каждой группы. Расскажем как паттерн реализуется. https://habr.com/ru/post/210288/

Какие использовал? Proxy, mediator, data access object (не gof), фабрика, прототипы, мемо?, паттерн, который работает с кучей вложенных объектов как с 1 сложным https://refactoring.guru/ru

Untitled

Untitled

Untitled

что такое синглтон?

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

В Python существует несколько способов реализации синглтона:

  1. Использование метакласса: в Python метаклассы - это специальные классы, которые используются для создания классов. Можно создать метакласс, который будет переопределять операцию создания экземпляра класса, чтобы гарантировать, что у класса будет только один экземпляр.
  2. Использование декоратора: можно создать декоратор, который будет оборачивать функцию-конструктор класса и гарантировать, что у класса будет только один экземпляр.
  3. Использование класса-обертки: можно создать класс-обертку, который будет хранить экземпляр класса-синглтона и предоставлять к нему доступ через статический метод или свойство. Этот подход позволяет избежать использования метаклассов и декораторов, что может быть полезно в случае, если вы не хотите менять оригинальный класс.

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