Паттерны проектирования
Что это такое
Паттерн проектирования — это именованное решение задачи, которая снова и снова встречается в объектно-ориентированном коде. Суть именно в имени: сказать «оберни это в адаптер» — значит за три слова передать форму, набор участников и цену. При этом паттерны не строительные блоки, которые суют везде, где обнаружилась пустота, и не чек-лист хорошего дизайна: каждый покупает гибкость в одном направлении, а плату за неё берёт сложностью во всех остальных.
Почему это важно
Общий словарь и вправду полезен: обсуждения дизайна сжимаются с абзацев до одного предложения, а ревьюер может сказать «это Стратегия с одной реализацией» — и его поймут сразу. Обратная сторона — вред прямо противоположный: паттерн, применённый раньше, чем появилась вариация, которую он обслуживает, добавляет косвенность и прячет прямой вызов за двумя переходами, которые никогда не понадобятся. Поэтому навык состоит в том, чтобы узнавать повторяющуюся задачу, называть цену каждого решения и брать паттерн лишь тогда, когда задача действительно есть.
Что в этом треке
- Зачем паттернам имена (01-cs-fundamentals/18-design-patterns/01-why-patterns-are-named) — что такое паттерн на самом деле, чего он стоит и как отличить его от идиомы или антипаттерна.
- Паттерны, которые оправдывают себя (01-cs-fundamentals/18-design-patterns/02-the-patterns-that-earn-their-keep) — небольшой набор, решающий настоящие задачи достаточно часто, чтобы знать его наизусть.
Предварительные требования
- Принципы SOLID (01-cs-fundamentals/09-solid-principles)
Что читать дальше
- Архитектура программного обеспечения (01-cs-fundamentals/25-software-architecture) — та же идея именованных компромиссов на уровень выше, где границы задают модули, а не классы.
- Переиспользование кода (01-cs-fundamentals/16-code-reusability) — стоит ли вообще выделять общую форму, прежде чем давать ей имя.
- Рефакторинг (01-cs-fundamentals/19-refactoring) — как вводить паттерн в работающий код малыми шагами, а не проектировать его заранее.