Перейти к основному содержимому
Онлайн-версии

Play ITЗагрузка интерактивного демо…

Паттерны проектирования — о разделе

Длинные листинги (от ~15 строк) вынесены в каталог code.spirzen.ru и подгружаются в статьях через ExternalCodeEmbed — C#, Java и другие реализации GoF не раздувают HTML энциклопедии. Короткие фрагменты и схемы mermaid остаются inline; интерактив ArchiStyler — в play.spirzen.ru.

Паттерн — имя проверенного решения повторяющейся проблемы. Сначала принципы перед паттернами и обзор; затем GoF и архитектурные стили ниже. Для Chain of Responsibility и обработки сбоев в коде — ошибки и исключения.

Теория данных (раздел 3)

Repository, Unit of Work, кэш — опираются на Основы БД и проектирование БД. Карта — проектирование.

Вопрос при изучении паттернаТеория (глава 4)
Класс, объект, наследование, полиморфизмООП — о разделе
SOLID перед GoFSOLID · Принципы ОО-проектирования перед паттернами — принципы
Инъекция зависимостей, DI-контейнерЗависимости — о разделе
Observer, async callbackАсинхронность — о разделе
Вопрос при изучении паттернаТеория (глава 2)
Adapter, Facade, внешний API2.09 Интеграция · Паттерны интеграции внешних систем — паттерны интеграции
HTTP, REST, контракт, статусыAPI · HTTP
Очереди, pub/sub, Saga, DLQБрокеры
Proxy (кэш, удалённый вызов), CDNRedis в интеграции · CDN
Цепочка фильтров, middlewareHTTP-экосистема
MVC, BFF, слой APIКак работают сайты

Play ITЗагрузка интерактивного демо…


Как проходить раздел, чтобы не осталось "сухой теории"

Оптимальный режим изучения:

  1. Прочитайте обзор и выберите 1-2 паттерна, которые решают реальную проблему в вашем коде.
  2. Соберите минимальный пример (1 модуль, 1 сценарий), не рефакторьте весь проект сразу.
  3. Проверьте эффект через тесты, читаемость и скорость добавления новой функции.
  4. Только после этого расширяйте применение на соседние модули.

Так материал закрепляется намного лучше, чем при последовательном "прочитал и пошел дальше".


Практическая навигация по связям раздела

Если нужен плавный старт, идите так:


Три уровня

УровеньПримеры
GoFFactory, Observer, Decorator — шпаргалка
АрхитектурныеLayered, Hexagonal, MVC
РаспределённыеSaga, Outbox, Circuit Breaker — теория: очереди, практика: design/2124, Инженерия устойчивости

Порядок чтения

  1. Принципы ОО-проектирования перед паттернами — четыре опоры и связь с SOLID
  2. Частые паттерны GoF в реальных проектах — десять шаблонов для быстрого старта
  3. Обзор · порождающие · структурные · поведенческие
  4. Составные паттерны и MVC · архитектурные · интеграции · доменные
  5. Углубление — большой гид по GoF в Java; C#: Стратегия, Итератор, Фабрика, Команда, Наблюдатель. Java: Цепочка, Итератор, Посредник, Мементо, Команда, Наблюдатель, Proxy, Фасад, Builder, Bridge, Composite, Decorator, Prototype, Abstract Factory, Factory Method, Adapter, Singleton, Strategy

Тематический маршрут по паттернам

Если удобнее учить паттерны по одной теме за раз, а не по группам GoF:

ТемаСтатьи
СтратегияЧастые паттерны GoF в реальных проектахПаттерн "Стратегия" в C# — когда нужен, а когда достаточно делегата / Паттерн "Стратегия" (Strategy) в Java — выбор алгоритма в runtime
НаблюдательЧастые паттерны GoF в реальных проектахПаттерн "Наблюдатель" в C# — события, IObservable и утечки / Паттерн "Наблюдатель" в Java — подписчики и ApplicationEvent
ДекораторПаттерн "Декоратор" (Decorator) в Java — расширение поведения без наследования
Фабрика (три уровня)Порождающие паттерныПаттерн "Фабрика" в C# — когда хватает DI-контейнера, Паттерн "Фабричный метод" (Factory Method) в Java — создание через подклассы, Паттерн "Абстрактная фабрика" (Abstract Factory) в Java — семейства совместимых клиентов
ОдиночкаПаттерн "Одиночка" (Singleton) в Java — один экземпляр и контролируемый доступ, лаб C#
КомандаПаттерн "Команда" в C# — объекты действий, а не методы / Паттерн "Команда" в Java — undo в редакторе и очередь действий
Адаптер, ФасадСтруктурные паттерны, Паттерн "Адаптер" (Adapter) в Java — совместимость с легаси и внешними SDK, Паттерн "Фасад" в Java — один метод над подсистемой
Шаблонный методПоведенческие паттерны
Итератор, КомпоновщикПаттерн "Итератор" в Java — Iterable, пагинация и for-each, Паттерн "Компоновщик" (Composite) в Java — дерево отдела и единый интерфейс
СостояниеПоведенческие паттерны (сравнение со Стратегией)
ЗаместительПаттерн "Заместитель" (Proxy) в Java — доступ, кэш и lazy loading
Составные, MVCСоставные паттерны и MVC
Когда применятьПринципы ОО-проектирования перед паттернами, Обзор паттернов проектирования
Bridge, Builder, …GoF паттерны в Java - большой практический гид, статьи 122–135

Каркас системы: Проектирование — о разделе · NFR. Базовая теория сети и интеграций — 2. Система и сеть.


Практика в лаборатории

ТемаКейс
Паттерн Singleton на C# (реализация, DI, тесты)"Singleton на C#"
Разбор ситуации перед выбором решения"Ситуации в IT"
Постмортем и фиксация архитектурных уроков"Разборы"
Слоистый REST-сервис (контроллер, сервис, репозиторий)"Spring Boot приложение"
Интеграция с внешним API (бот как клиент)"Telegram Bot на Python"

Теория TDD и связь с unit-тестами — в разделе "Тестирование"; практика цикла Red-Green-Refactor — "Тренируем TDD".

Антипаттерн

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



В подборках

Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:

ТехлидРоль и практика архитектора программного обеспечения, Проектирование — о разделе, Проектирование и архитектура — о разделе, Архитектура выполнения — о разделе, Специализации, Микросервисы и интеграция — о разделе.

Архитектура и проектирование ПОПроектирование и архитектура — о разделе, Проектирование — о разделе, Архитектура десктопных приложений, Методы защиты пользовательских и корпоративных данных, Архитектура выполнения — о разделе, Микросервисы и интеграция — о разделе.