Тёмный

Принцип подстановки Барбары Лисков - SOLID в деталях 

Уголок сельского джависта
Подписаться 10 тыс.
Просмотров 4,1 тыс.
50% 1

Третий ролик серии «SOLID в деталях» посвящён принципу подстановки Барбары Лисков (Liskov Substitution Principle; LSP).
В серии роликов «SOLID в деталях» я постараюсь подробно рассказать о принципах SOLID, а так же продемонстрировать их практическое применение.
Паблик в VK: public2...
Канал в Telegram: t.me/+TZCuO38v...
#java #solid #lsp #softwarearchitecture

Опубликовано:

 

10 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 17   
@Antimurr
@Antimurr 2 месяца назад
впервые встречаю того, кто четко объясняет этот принцип с использованием ковариантности и контрвариантности, а не как обычно невнятно чего-то там про "соблюдайте контракт" - а что оно такое даже и не говорят в итоге однозначно зачет
@TheGwenIngwarr
@TheGwenIngwarr Год назад
После вашего объяснения все встало на места с этим принципом, спасибо
@shurik_codes
@shurik_codes Год назад
Вступайте в официальный паблик в VK: vk.com/shurik_kodit Подписывайтесь на канал в Telegram: t.me/rural_java
@dmitrylemeshenko9642
@dmitrylemeshenko9642 8 месяцев назад
Спасибо!!!!!
@andd3dfx
@andd3dfx 2 дня назад
Благодарю за видео, но: - Термины ковариантность/контравариантность - хорошо бы определить вслух, что они значат, до многократного их использования. - Пару раз наблюдался паттерн: код/тест написали, запустили - он прошел, потом ("ой, да - тут надо по другому") поправили - и НЕ запустили. А вдруг теперь не пройдет тест?
@romanovichihin2429
@romanovichihin2429 Год назад
Лайк, коммент, следующий ролик!
@alexeysvetlenko2217
@alexeysvetlenko2217 Год назад
Тему Ковариантности/Контрвариантности раскркрой более широко пожалуйста. Класно бы в сравнении с TypeScript.
@Muchitel
@Muchitel 9 месяцев назад
поддерживаю. Не совсем понятно как мы от упрощеной трактовки принципа перешли к ограничениям на Ковариантности/Контрвариантности :)
@shluhogon_42
@shluhogon_42 Год назад
Так в конце нужно было показать, как правильно орагнизовать логику класса
@shurik_codes
@shurik_codes Год назад
Да, хорошее замечание, надо было сделать какой-то вывод. Но конкретно проблема квадрат/прямоугольник решается отделением Square от Rectangle в силу того, что логика изменения размеров у них принципиально отличается.
@shluhogon_42
@shluhogon_42 Год назад
@@shurik_codes в принципе можно вынести метод в интерфейс или абстрактной фигурой пользоваться.
@shurik_codes
@shurik_codes Год назад
Это не решает проблемы, так как чтобы определить ожидаемое поведение (в данном случае вычисление площади), нужно знать, с экземпляром какого конкретно класса взаимодействует код. В продемонстрированном коде теста эта проблема не совсем очевидна в силу того, что экземпляр тестируемого класса создаётся прямо в тестовом методе. А вот если бы экземпляр класса Rectangle получался от абстрактной фабрики или фабричного метода, то тогда пример был бы нагляднее: мы получаем прямоугольник, устанавливаем размеры 10х3, и ожидаем площадь 30, но получаем - 9. Да и в целом вынос метода в интерфейс или абстрактный класс не решит нарушение принципа, заключающееся в изменении свойств родительского класса в методе класса-наследника. Тут до кучи проявляется нарушение принципа открытости/закрытости.
@shurik_codes
@shurik_codes Год назад
Записал вдогонку ролик с решением проблемы квадрата/прямоугольника: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-AILeiAJY_78.html
@scc-6
@scc-6 4 месяца назад
Если рабоотает с классом, то должно работать и с подклассом этого класса. Нужно запомнить, что это именно L в солид, спасибо
@sergeyklunniy8839
@sergeyklunniy8839 7 месяцев назад
Что он говорит в джава ковариантность аргументов методов не работает, это же не правда, короче он то сам хоть пересмотривает ролики свои? он напутал все то говорит про ковариантность то про контрвариантность и он сам себя запутал....
@shurik_codes
@shurik_codes 7 месяцев назад
Возможно, я не совсем ясно выразился в ролике, отрицать не буду. Но ковариантность и контравариантность типов аргументов при переопределении методов в Java не работают. Да, можно в классе-наследнике объявить метод с сигнатурой, отличающейся только типом аргумента от сигнатуры метода из класса-родителя, проблем с точки зрения компилятора это не вызовет. Но это будет уже не переопределением метода (overriding), а перегрузкой (overloading). И это будет уже новый, а не наследуемый метод.
@donpedro2125
@donpedro2125 5 месяцев назад
Автор нарушил прицип единственной ответственности и напихал в видео кучу всего кроме самой Барбары, чем только запутал зрителя.
Далее
Katta janjal
00:29
Просмотров 253 тыс.
World‘s Strongest Man VS Apple
01:00
Просмотров 25 млн
Просто о SOLID (Принципы SOLID)
15:54
Просмотров 220 тыс.
Katta janjal
00:29
Просмотров 253 тыс.