Паттерны проектирования
Паттерны проектирования — это обобщенное описание того, что в коде очень часто встречается. Чтобы люди, глядящие в этот код, могли похожие вещи называть определенным термином.
Использование повторимой архитектурной конструкции, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
Ключевые принципы
Принцип разработки программного обеспечения, нацеленный на снижение повторения информации различного рода, особенно в системах со множеством слоёв абстрагирования.
Суть принципа: повторяющиеся части кода должны объединяться в общие функции или модули. Подход DRY нацелен на оптимизацию процесса разработки: снижение количества ошибок, упрощение процесса обновления, а также улучшение читаемости кода.
Создавать простые и понятные решения, избегая избыточной сложности
Суть принципа: не означает примитивизацию кода или отказ от сложных алгоритмов, когда они действительно необходимы. Речь идёт о стремлении к минимально возможной сложности для решения конкретной задачи.
Принцип разработки программного обеспечения, согласно которому не стоит реализовывать функционал, который пока не нужен.
Суть принципа: нужно не отвлекаться на гипотетические функции, а концентрироваться на текущих реальных потребностях проекта.
- Single Responsibility S_olid — принцип единственной ответственности гласит, что у каждого класса должна быть только одна причина для изменения, то есть каждый класс должен отвечать только за одну задачу.
- Open/closed s_O_lid — принцип открытости/закрытости утверждает, что программные сущности должны быть открыты для расширения, но закрыты для изменения. Это значит, что функциональность системы можно расширять, не изменяя уже существующий код.
- Liskov Substitution so_L_id — принцип подстановки гласит, объекты подклассов должны быть заменяемы объектами их суперклассов без нарушения корректности программы. Это означает, что наследуемый класс должен дополнять, а не изменять поведение базового класса.
- Interface Segregation sol_I_d — принцип разделения интерфейса предполагает, что лучше иметь несколько специализированных интерфейсов, чем один общий. Клиенты не должны зависеть от интерфейсов, которые они не используют.
- Dependency Inversion soli_D — принцип инверсии зависимостей утверждает, что высокоуровневые модули не должны зависеть от низкоуровневых модулей. Оба типа модулей должны зависеть от абстракций, а не от конкретных реализаций.
Типы Шаблонов Проектирования
- Цепочка Обязанностей (Chain Of Responsibilities)
- Команда (Command)
- Итератор (Iterator)
- Посредник (Mediator)
- Наблюдатель (Observer)
- Посетитель (Visitor)
- Стратегия (Strategy)
- Состояние (State)
- Шаблонный метод (Template Method)
- Объект Null (Null Object)
- Спецификация (Specification)
- Локатор Служб (Service Locator)
- Хранилище (Repository)
- Интерпретатор (Interpreter)
- Хранитель (Memento)