Patterns Flashcards
Принципы SOLID
SOLID - акроним для набора практик проектирования:
1) Single Responsibility Principle (Принцип единственной обязанности):
- компонент должен выполнять только одну задачу
- целостный функционал компонента и высокая связность
2) Open/Closed Principle (Принцип открытости/закрытости):
- cущности программы должны быть открыты для расширения, но закрыты для изменения
- паттерн Шаблонный метод - распространенный способ применения принципа открытости/закрытости
- нужно исп. интерфейсы, виртуальные методы, чтобы не нужно было изменять функции, работающие с этой сущностью
function AnimalSound(a: Array<Animal>) {
for(int i = 0; i <= a.length; i++) {
a[i].makeSound();
}
}</Animal>
3) Liskov Substitution Principle (Принцип подстановки Лисков):
- Цель этого принципа заключаются в том, чтобы классы-наследники могли бы использоваться вместо родительских классов, от которых они образованы, не нарушая работу программы
- нужно исп. интерфейсы, виртуальные методы, чтобы не нужно было изменять функции, работающие с этой сущностью
function AnimalLegCount(a: Array<Animal>) {
for(let i = 0; i <= a.length; i++) {
a[i].LegCount();
}
}</Animal>
4) Interface Segregation Principle (Принцип разделения интерфейсов):
- Создавайте узкоспециализированные интерфейсы, предназначенные для конкретного клиента
- Клиенты не должны зависеть от интерфейсов, которые они не используют.
5) Dependency Inversion Principle (Принцип инверсии зависимостей):
- Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те и другие должны зависеть от абстракций
- служит для создания слабосвязанных сущностей, которые легко тестировать, модифицировать и обновлять.
Принципы ООП
Принципы ООП:
1) Инкапсуляция (Заключается в сокрытии деталей реализации объекта от других объектов, внутреннее состояние объекта защищено от прямого доступа, а изменение его состояния возможно только через методы, которые предоставляет этот объект)
2) Наследование (Позволяет создавать новый класс на основе уже существующего класса. Новый класс наследует атрибуты и методы базового класса, что способствует повторному использованию кода и упрощению его расширения)
3) Полиморфизм (Это способность объекта использовать методы производного класса, несмотря на то, что он представлен ссылкой на базовый класс. Это позволяет объектам различных классов иметь различное поведение при вызове одних и тех же методов, что упрощает управление и расширение кода)
4) Абстракция (Позволяет сконцентрироваться на важных атрибутах объекта, игнорируя несущественные. Это достигается за счет определения классов, которые представляют абстрактные понятия и отражают функциональность и характеристики объектов, но не включают конкретные детали реализации)
ООП
Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции “объектов”, которые могут содержать данные в виде полей, часто известных как атрибуты или свойства, и код, в виде процедур, часто известных как методы, ООП фокусируется на использовании объектов для моделирования реальных или абстрактных сущностей, упрощая разработку и поддержку программных систем.