💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • Какие бывают паттерны?
  • 1. Порождающие (Creational) — помогают удобно создавать объекты
  • 2. Структурные (Structural) — про удобную компоновку объектов
  • 3. Поведенческие (Behavioral) — про взаимодействие объектов
  • Как выбрать нужный паттерн?

Что такое паттерны проектирования?

07.02.2025

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

Какие бывают паттерны?

1. Порождающие (Creational) — помогают удобно создавать объекты

Когда важно не просто создать объект, а сделать это грамотно и гибко.

  • Singleton — создаёт единственный экземпляр класса и следит, чтобы никто не создал ещё один.

  • Factory Method — делегирует создание объектов дочерним классам, скрывая детали реализации.

  • Abstract Factory — создаёт целые семейства объектов, не указывая их точный класс.

  • Builder — пошагово собирает сложные объекты, как конструктор.

  • Prototype — создаёт новые объекты путём клонирования уже существующих.

2. Структурные (Structural) — про удобную компоновку объектов

Помогают организовать связи между классами и сделать код чище.

  • Adapter — превращает несовместимые интерфейсы в совместимые (как переходник для зарядки).

  • Decorator — динамически добавляет объекту новые возможности, не меняя его код.

  • Facade — создаёт простой интерфейс для работы с кучей сложных классов (как пульт от телевизора).

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

  • Composite — позволяет работать с группами объектов так же, как с одиночными.

  • Bridge — разделяет абстракцию и её реализацию, чтобы их можно было менять независимо друг от друга.

3. Поведенческие (Behavioral) — про взаимодействие объектов

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

  • Observer — один объект подписывается на изменения другого (как уведомления в соцсетях).

  • Strategy — позволяет менять алгоритм на лету, подстраиваясь под ситуацию.

  • Command — превращает запросы в объекты, чтобы легко их комбинировать, отменять или ставить в очередь.

  • Iterator — даёт удобный способ перебирать элементы коллекции без раскрытия её структуры.

  • Mediator — организует взаимодействие между объектами через посредника, уменьшая связность кода.

  • State — изменяет поведение объекта в зависимости от его состояния.

Как выбрать нужный паттерн?

Не кидайся в бой с паттернами просто так. Сначала разберись в задаче: какие есть объекты, как они взаимодействуют, какие у них зависимости. Если задача стандартная — скорее всего, уже есть готовое решение среди паттернов. Если нет — не мучайся, просто напиши код проще.

Главное правило: код должен быть понятным.

Если после применения паттерна стало только сложнее, значит, что-то пошло не так.

PreviousОперации со спискамиNextШпаргалка по шаблонам проектирования

Last updated 3 months ago