Содержание
- 2. Что такое SOLID SOLID - это аббревиатура пяти основных принципов дизайна классов в объектно-ориентированном проектировании. Аббревиатура
- 3. Основные принципы Single responsibility - Принцип единственной обязанности Open-closed - Принцип открытости/закрытости Liskov substitution - Принцип
- 4. Single responsibility Принцип единственной обязанности Класс или модуль должны иметь одну и только одну причину измениться.
- 5. Пример нарушения принципа SRP class Order { public void calculate(){ ... } public void addItem(Product product){
- 6. Как исправить class Order { public void calculate(); public void addItem(Product product){ ... } public List
- 7. Но... Существует, например, паттерн Active Record, который нарушает принцип SRP Active Record может быть успешно использован
- 8. Open-closed Принцип открытости/закрытости Объекты проектирования (классы, функции, модули и т.д.) должны быть открыты для расширения, но
- 9. Пример нарушения OCP class MessageSender { … public void send(String message, MessageType type){ if(type == MessageType.SMS)
- 10. Как исправить Воспользуемся паттерном “Стратегия” interface SendingStrategy { void send(String message); } class MessageSender { private
- 11. Как исправить(продолжение) Конкретные стратегии отправки class EmailSendingStrategy implements SendingStrategy { @Override public void send(String message) {
- 12. Liskov substitution Принцип подстановки Барбары Лисков Роберт С. Мартин определил этот принцип так: Функции, которые используют
- 13. Замещение T S Объекты типа T могут быть замещены объектами типа S без каких-либо изменений желательных
- 14. Нарушение принципа LSP Circle-ellipse problem Square-rectangle problem
- 15. Square-rectangle problem Является ли класс Квадрат подклассом класса Прямоугольник? Rectangle Square ?
- 16. Класс Rectangle class Rectangle { private double width; private double height; public double getWidth() { return
- 17. Класс Square class Square extends Rectangle { public void setWidth(double width) { this.setSide(width); } public void
- 18. В чем же проблема? public class LiskovViolation { public static void main(String[] args) { Rectangle rectangle
- 19. Как исправить Если использовать концепцию неизменяемого объекта (immutable object), то принцип не будет нарушаться. Необходимо убрать
- 20. Interface segregation Принцип разделения интерфейса Слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы
- 21. “Толстый” интерфейс Если среди методов интерфейса можно выделить группы методов, которые нужны определенным пользователям интерфейса, то
- 22. Пример нарушения ISP interface Person { void goToWork(); void withdrawSalary(); void eat(); } Если мы захотим
- 23. Как исправить public interface Person { void eat(); } public interface Worker { void goToWork(); void
- 24. Dependency inversion Принцип инверсии зависимостей Все взаимосвязи в программе должны поддерживаться с помощью абстракных классом или
- 25. Нарушение принципа DIP public class Crawler { public void saveHtmlDocument() { DomBasedHtmlParser parser = new DomBasedHtmlParser();
- 26. Как исправить. Вариант 1 public class Crawler { private HtmlParser parser; public Crawler(HtmlParser parser) { this.parser
- 28. Скачать презентацию
















![В чем же проблема? public class LiskovViolation { public static void main(String[]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/382251/slide-17.jpg)








Кинематограф как средство хранения информации
Дно мирового океана
Транспортная упаковка-обрешетка фреймы с консервационными материалами
Искусство фотографии. Задание
Восстановление работоспособности в скоростносиловых видах спорта с помощью локальной криотерапии
Особенности построения на клетчатой бумаге
Песочное тесто и изделия из него
март, 2008
Организационная структура страховой компании
Явление полного отражения света
Основные вопросы политической сферы
Кибер_информационная_защита_KZ_ПРИМЕР
МОДУЛЬ «ОКНО ОПТИМАЛЬНОГО НАЗНАЧЕНИЯ»
Поддержкасубъектов малого предпринимательства в подготовке кадров
Мероприятия праздничных дней, проводимые в войсковой части
Нумерованные и маркированные списки
Повторение 2.0 (1)
К юбилею Сталинградской битвы. События и герои Сталинграда
Источники права
Собрание слов, или Один час из жизни «Толкового словаря» В. И. Даля
ТИПЫ И ЭТАПЫ УРОКА
Подведение итогов за II отчетный период международного проекта Государственного камерного хора Республики Мордовия «Духовно-нра
МАТЕРИАЛЫ ДЛЯ ЖБК. АРМАТУРА
Политическая система, её структура и функции
Зимние олимпийские виды спорта
Азбука в загадках
Раскрась свой чехол сам
Мамаев Курган