# oop-design-patterns

Правило для GitHub Copilot, которое подталкивает его к паттернам GoF и принципам SOLID при генерации и рефакторинге ООП-кода.

- правило · `type=rule` · GitHub Copilot · ★ 40418
- Автор: github · официальный репозиторий GitHub
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/github/awesome-copilot/tree/HEAD/instructions/oop-design-patterns.instructions.md
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/rules/oop-design-patterns

## Что делает

Файл описывает, как Copilot должен выбирать паттерны проектирования. Внутри — четыре принципа архитектуры: программировать под интерфейс, а не под реализацию, предпочитать композицию наследованию, изолировать то, что меняется, и держать классы слабо связанными. Дальше идут три группы паттернов GoF с пояснением, когда каждый уместен: порождающие (Abstract Factory, Factory Method, Builder, Singleton, Prototype), структурные (Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy) и поведенческие (Strategy, Observer, Command, State, Template Method, Chain of Responsibility, Mediator, Iterator, Visitor, Memento).

Отдельный блок задаёт правила генерации кода. Copilot должен сначала писать интерфейс или абстрактный базовый класс, а уже потом реализации, помечать поля `private` по умолчанию и называть классы так, чтобы из имени читался паттерн — например, `TaxCalculationStrategy` или `WidgetFactory`. Singleton разрешён только там, где действительно нужен единственный экземпляр, и вместо него советуют внедрение зависимостей. Крупные классы правило велит разбивать на части и связывать их через Mediator или Strategy.

Правило подключается через `applyTo` и срабатывает на файлах `**/*.py`, `**/*.java`, `**/*.ts`, `**/*.js`, `**/*.cs`. Если ваш проект на другом языке, оно просто не подхватится — это повод проверить маску перед тем, как ждать изменений в подсказках. Текст инструкции обрезан на принципе подстановки Лисков, так что полного разбора SOLID в файле может не оказаться.

## Установка

### GitHub Copilot (родная платформа)

**Вручную: положить файлы**
- Файл: `.github/instructions/oop-design-patterns.instructions.md` — Поле applyTo задаёт, к каким файлам применять

### Claude Code

**Вручную: положить файлы**
- Файл: `.claude/rules/oop-design-patterns.md` — Поле paths во frontmatter ограничивает файлы: applyTo из источника → paths

### Codex

**AGENTS.md**
- Codex читает AGENTS.md: вставьте текст правила туда

### Cursor

**Вручную: положить файлы**
- Файл: `.cursor/rules/oop-design-patterns.mdc` — Во frontmatter: description, globs, alwaysApply. applyTo из источника → globs, иначе правило само не подключится

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/rules/oop-design-patterns.md`

### Cline

**Вручную: положить файлы**
- Файл: `.clinerules/oop-design-patterns.md`

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/github/awesome-copilot/tree/HEAD/instructions/oop-design-patterns.instructions.md

## Когда брать
- выбрать паттерн под задачу создания объектов
- убрать длинные цепочки `if-else` через Strategy
- разбить разросшийся класс на несколько связанных
- сделать поля закрытыми и добавить неизменяемость
- отвязать отправителя запроса от получателя

## Примеры запросов агенту
- Подбери паттерн для расчёта налогов разными способами и объясни выбор в комментарии
- Отрефактори этот класс: сначала интерфейс, потом реализации
- Мне нужна отмена последнего действия — какой паттерн GoF тут подойдёт?

## Похожие
- [python-design-patterns](https://affpapa.org/nevibecode/skills/python-design-patterns.md) — скилл · 22842 установки
- [golang-design-patterns](https://affpapa.org/nevibecode/skills/golang-design-patterns.md) — скилл · 42100 установок

Из того же набора: [github/awesome-copilot](https://affpapa.org/nevibecode/by/github/awesome-copilot.md) — 732 карточки

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
