Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: design patterns, software, programming patterns, architecture, factory, builder, singleton, adapter, decorator, proxy, observer, strategy, command

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

Этот вопрос проверяет знание основных паттернов проектирования и понимание их применения для решения стандартных задач в разработке.

Короткий ответ

Паттерны проектирования — это проверенные временем шаблоны решения типичных задач. Они делятся на три основные категории:

  • Порождающие (например, Singleton, Factory, Builder).

  • Структурные (например, Adapter, Decorator, Proxy).

  • Поведенческие (например, Observer, Strategy, Command).

Длинный ответ

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

Порождающие

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

  • Singleton: гарантирует существование единственного экземпляра класса.

  • Factory Method: предоставляет интерфейс для создания объектов в подклассах.

  • Builder: позволяет пошагово создавать сложные объекты.

Пример:

class Singleton:
    	_instance = None

    	def __new__(cls, *args, **kwargs):
        	if not cls._instance:
            		cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
        	return cls._instance

# Проверка работы
singleton_1 = Singleton()
singleton_2 = Singleton()
print(singleton_1 is singleton_2)  # True

Структурные

Организуют классы и объекты для построения масштабируемых систем.

  • Adapter: приводит интерфейс одного класса к виду, совместимому с другим.

  • Decorator: добавляет новую функциональность объекту без изменения его структуры.

  • Proxy: предоставляет заменитель для другого объекта.

Пример:

class OldSystem:
    	def old_method(self):
        	return "Данные из старой системы"

class Adapter:
    	def __init__(self, old_system):
        	self.old_system = old_system

    	def new_method(self):
        	return self.old_system.old_method()

# Использование
old_system = OldSystem()
adapter = Adapter(old_system)
print(adapter.new_method())  # Данные из старой системы

Поведенческие

Описывают взаимодействие между объектами и классами.

  • Observer: уведомляет подписчиков об изменении состояния объекта.

  • Strategy: определяет семейство алгоритмов и позволяет динамически их изменять.

  • Command: инкапсулирует запрос в объект, позволяя параметризовать методы.

Пример:

class Subject:
    	def __init__(self):
        	self._observers = []

    	def add_observer(self, observer):
        	self._observers.append(observer)

    	def remove_observer(self, observer):
        	self._observers.remove(observer)

    	def notify_observers(self, message):
        	for observer in self._observers:
            		observer.update(message)

class Observer:
    	def update(self, message):
        	print(f"Получено уведомление: {message}")

# Использование
subject = Subject()
observer_1 = Observer()
observer_2 = Observer()

subject.add_observer(observer_1)
subject.add_observer(observer_2)

subject.notify_observers("Обновление данных")
# Получено уведомление: Обновление данных
# Получено уведомление: Обновление данных

Понимание этих паттернов помогает строить надежное ПО, упрощает поддержку и развитие приложений.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    9

Навыки

  • Python

    Python

Ключевые слова

#design patterns

#software

#programming patterns

#architecture

#factory

#builder

#singleton

#adapter

#decorator

#proxy

#observer

#strategy

#command

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.