-
Порождающие
- Фабричный метод (способ создания объектов через фабричный метод, а не напрямую через конструктор)
- Абстрактная фабрика (интерфейс для создания семейств связанных объектов без указания их конкретных классов)
- Строитель (пошаговое создание сложных объектов, позволяя получить разные варианты объекта, используя один и тот же код строительства)
- Прототип (создание новых объектов путем копирования существующего образца)
- Одиночка (гарантирует наличие только одного экземпляра класса и предоставляет к нему глобальную точку доступа)
-
Структурные
- Адаптер (позволяет объектам с несовместимыми интерфейсами работать вместе)
- Мост (разделяет абстракцию и реализацию, позволяя им изменяться независимо)
- Компоновщик (позволяет трактовать отдельные объекты и их группы одинаково)
- Декоратор (динамически добавляет объектам новые обязанности)
- Фасад (предоставляет унифицированный интерфейс к набору интерфейсов подсистемы)
- Приспособленец (эффективно управляет большим количеством мелких объектов)
- Заместитель (предоставляет объект-заместитель, контролирующий доступ к другому объекту)
-
Поведенческие
- Цепочка обязанностей (передает запросы по цепочке обработчиков)
- Команда (инкапсулирует запрос как объект, позволяя параметризовать клиентов, ставить запросы в очередь, логировать их и поддерживать отмену операций)
- Итератор (предоставляет способ последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего представления)
- Посредник (упрощает взаимодействие между множеством объектов, вводя объект-посредник)
- Хранитель (позволяет сохранить и восстановить внутреннее состояние объекта, не нарушая его инкапсуляции)
- Наблюдатель (определяет зависимость между объектами "один ко многим", так что при изменении состояния одного объекта все зависящие оповещаются и обновляются автоматически)
- Состояние (позволяет объекту изменять свое поведение в зависимости от внутреннего состояния)
- Стратегия (определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми)
- Шаблонный метод (в базовом классе определяет скелет алгоритма в методе, позволяя подклассам переопределять некоторые шаги алгоритма без изменения его структуры в целом)
- Посетитель (позволяет добавлять новые операции к иерархии классов без изменения самих классов)
В Android-разработке часто используются MVx-шаблоны (MVP, MVVM), а также шаблоны из библиотеки Android Architecture Components (Room, ViewModel, LiveData, Navigation).