==================================================================================================== SOLID
- Принцип единственной обязанности (Single Responsibility Principle) Для каждого класса должно быть определено единственное назначение. Все ресурсы, необходимые для его осуществления, должны быть инкапсулированы в этот класс и подчинены только этой задаче.
- На каждый объект должна быть возложена одна единственная обязанность.
- Разделять классы по конкретным задачам.
- Принцип открытости/закрытости (Open Closed Principle) Программные сущности должны быть открыты для расширения, но закрыты для изменений.
- Программные сущности должны быть открыты для расширения, но закрыты для модификации.
- Для изменения поведения классов, не требуется изменять исходный код.
- Создать интерфейс, который будет реализовываться классами.
- Принцип подстановки Барбары Лисков (Liskov Substitution Principle) Методы, использующие некий тип, должны иметь возможность использовать его подтипы, не зная об этом.
- Принцип разделения интерфейсов (Interface Segregation Principle) Предпочтительнее разделять интерфейсы на более мелкие тематические, чтобы реализующие их классы не были вынуждены определять методы, которые непосредственно в них не используются.
- Принцип инверсии зависимостей (Dependency Inversion Principle) Система должна конструироваться на основе абстракций «сверху вниз»: не абстракции должны формироваться на основе деталей, а детали должны формироваться на основе абстракций.