💀
Второй курс РПО
Язык UML
Язык UML
  • Сложности при разработке программного обеспечения
  • Почему появилось ООП и в чём его смысл?
  • Как программировали до ООП и почему это стало проблемой?
  • Как появился ООП и почему он спас программирование
  • Как планировать код до его написания: ООАП
  • Системный анализ и моделирование: как понимать сложные системы
  • Что такое объекты?
  • Экскурс в Диаграммы
  • История развития языка UML
  • 56-я Практическая
  • Диаграмма развёртывания
  • Диаграмма сотрудничества
  • Паттерны - что это?
  • Для второкурсников
Powered by GitBook
On this page
  • Что такое шаблоны проектирования?
  • Типы шаблонов
  • Как классы дружат между собой?
  • Поведенческие паттерны (про взаимодействие объектов)
  • Структурные паттерны (про удобную организацию кода)
  • Порождающие паттерны (про создание объектов)

Паттерны - что это?

11.03.2025

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

Шаблоны — это как чит-коды для кодинга. Готовые шпаргалки, чтобы твой код был:

  • Читаемым — любой поймёт, что ты накодил.

  • Гибким — легко поменять шмотки, не ломая всё.

  • Удобным для поддержки — не придётся разгребать тонны говнокода.

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


Типы шаблонов

  1. Порождающие — создают объекты по уму, чтобы не плодить хаос.

  2. Структурные — упрощают структуру кода, чтобы всё было красиво и удобно.

  3. Поведенческие — управляют, как объекты общаются друг с другом.


Как классы дружат между собой?

  • Агрегация — A юзает B, но B живёт своей жизнью. Пример: У тебя есть машина, а в ней колёса. Колёса могут быть отдельно от машины.

  • Композиция — A владеет B, и без A у B нет шансов. Пример: У тебя есть дом, а в нём комнаты. Без дома комнатам капец.

  • Зависимость — A нуждается в B, и если B сломается, A тоже в пролёте. Пример: Ты играешь в игруху, а она зависит от инета. Нет инета — нет игры.

  • Обобщение — A берёт шмотки от B (наследование или интерфейсы). Пример: Кот наследует "мяукать" от класса "животные".


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


Структурные паттерны (про удобную организацию кода)


Порождающие паттерны (про создание объектов)

PreviousДиаграмма сотрудничестваNextДля второкурсников

Last updated 2 months ago

Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример
Что это
Пример

Memento (Хранитель)

Сохраняем состояние, чтобы потом откатить назад.

Ctrl+Z в текстовом редакторе — вернул старый текст.

Chain of Responsibility (Цепочка обязанностей)

Запрос идёт по цепочке, пока кто-то не скажет "я беру".

Ты пишешь в техподдержку, и твой тикет перекидывают от бота к челу.

Observer (Наблюдатель)

Один объект кричит другим: "Эй, я поменялся!".

Подписка на ютубера — он выложил видос, тебе пришло уведомление.

Command (Команда)

Запросы как отдельные шмотки, которые можно юзать когда угодно.

Макрос в игре — одна кнопка, а перс делает комбо.

State (Состояние)

Объект меняет поведение в зависимости от настроения.

Светофор — красный (стой), зелёный (иди).

Interpreter (Интерпретатор)

Разбирает и выполняет команды на каком-то языке.

Калькулятор, который считает "2 + 2".

Strategy (Стратегия)

Разные способы сделать одно и то же, выбирай любой.

Навигация — едешь на машине, пешком или на велике.

Iterator (Итератор)

Удобно листать коллекцию, не парясь о её внутренностях.

Свайпаешь плейлист в Spotify.

Template Method (Шаблонный метод)

Даёт скелет алгоритма, но шаги можно кастомить.

Рецепт пиццы — тесто+начинка, а что кинуть сверху — решай сам.

Mediator (Посредник)

Один чел рулит общением, чтобы объекты не путались.

Чат-бот в группе, который раздаёт команды всем.

Visitor (Посетитель)

Добавляет новую фичу, не трогая старый код.

Плагин для фотошопа, который рисует фильтры.

Adapter (Адаптер)

Переходник для шмоток, которые не дружат.

Зарядка для старого телефона через USB-C адаптер.

Proxy (Прокси)

Посредник, который решает, пускать или нет.

VPN, который реально работает.

Bridge (Мост)

Разделяет "как выглядит" и "как работает".

Кнопка на сайте — дизайн отдельно, действие отдельно.

Composite (Компоновщик)

Собирает кучу мелких штук в одно дерево.

Плейлист — много песен, но юзаешь как одно целое.

Decorator (Декоратор)

Накидывает новые фичи, не ломая основу.

Пицца + пепперони, но база та же.

Facade (Фасад)

Упрощает сложную систему одной кнопкой.

Заказ еды — жмёшь "купить", а всё само делается.

Flyweight (Приспособленец)

Экономит место, юзая шмотки повторно.

Одно дерево в игре копируется по всей карте.

Abstract Factory (Абстрактная фабрика)

Создаёт целые семейства объектов.

Фабрика мебели — столы, стулья, шкафы в одном стиле.

Builder (Строитель)

Собирает сложную шмотку пошагово.

Собираешь бургер — булка, мясо, соус, салат.

Factory Method (Фабричный метод)

Подклассы решают, что создавать.

Фабрика машин — BMW или Toyota, выбирай.

Prototype (Прототип)

Клонируешь шмотку вместо создания с нуля.

Копируешь документ в Word через Ctrl+C, Ctrl+V.

Singleton (Одиночка)

Один объект на весь проект, и точка.

Один чат-бот на весь сайт, больше не надо.