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

  Рет қаралды 3,473

Уголок сельского джависта

Уголок сельского джависта

Жыл бұрын

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

Пікірлер: 15
@TheGwenIngwarr
@TheGwenIngwarr Жыл бұрын
После вашего объяснения все встало на места с этим принципом, спасибо
@alexeysvetlenko2217
@alexeysvetlenko2217 8 ай бұрын
Тему Ковариантности/Контрвариантности раскркрой более широко пожалуйста. Класно бы в сравнении с TypeScript.
@Muchitel
@Muchitel 5 ай бұрын
поддерживаю. Не совсем понятно как мы от упрощеной трактовки принципа перешли к ограничениям на Ковариантности/Контрвариантности :)
@romanovichihin2429
@romanovichihin2429 10 ай бұрын
Лайк, коммент, следующий ролик!
@dmitrylemeshenko9642
@dmitrylemeshenko9642 4 ай бұрын
Спасибо!!!!!
@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. Да и в целом вынос метода в интерфейс или абстрактный класс не решит нарушение принципа, заключающееся в изменении свойств родительского класса в методе класса-наследника. Тут до кучи проявляется нарушение принципа открытости/закрытости.
@scc-6
@scc-6 27 күн бұрын
Если рабоотает с классом, то должно работать и с подклассом этого класса. Нужно запомнить, что это именно L в солид, спасибо
@shurik_codes
@shurik_codes Жыл бұрын
Вступайте в официальный паблик в VK: vk.com/shurik_kodit Подписывайтесь на канал в Telegram: t.me/rural_java
@shurik_codes
@shurik_codes Жыл бұрын
Записал вдогонку ролик с решением проблемы квадрата/прямоугольника: kzfaq.info/get/bejne/d698mMxyr7_DZ2w.html
@sergeyklunniy8839
@sergeyklunniy8839 3 ай бұрын
Что он говорит в джава ковариантность аргументов методов не работает, это же не правда, короче он то сам хоть пересмотривает ролики свои? он напутал все то говорит про ковариантность то про контрвариантность и он сам себя запутал....
@shurik_codes
@shurik_codes 3 ай бұрын
Возможно, я не совсем ясно выразился в ролике, отрицать не буду. Но ковариантность и контравариантность типов аргументов при переопределении методов в Java не работают. Да, можно в классе-наследнике объявить метод с сигнатурой, отличающейся только типом аргумента от сигнатуры метода из класса-родителя, проблем с точки зрения компилятора это не вызовет. Но это будет уже не переопределением метода (overriding), а перегрузкой (overloading). И это будет уже новый, а не наследуемый метод.
@donpedro2125
@donpedro2125 Ай бұрын
Автор нарушил прицип единственной ответственности и напихал в видео кучу всего кроме самой Барбары, чем только запутал зрителя.
Проблема квадрата/прямоугольника, объяснение и решение
10:58
Уголок сельского джависта
Рет қаралды 2 М.
Always be more smart #shorts
00:32
Jin and Hattie
Рет қаралды 10 МЛН
Must-have gadget for every toilet! 🤩 #gadget
00:27
GiGaZoom
Рет қаралды 7 МЛН
Универ. 10 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:04:59
Комедии 2023
Рет қаралды 2,2 МЛН
1 класс vs 11 класс  (игрушка)
00:30
БЕРТ
Рет қаралды 4,1 МЛН
Принцип подстановки Лисков. SOLID для React
15:26
Михаил Непомнящий
Рет қаралды 11 М.
Принцип инверсии зависимости - SOLID в деталях
9:29
Уголок сельского джависта
Рет қаралды 2,5 М.
Generics: The most intimidating TypeScript feature
18:19
Matt Pocock
Рет қаралды 163 М.
Принципы SOLID / С Примерами На Python
12:36
PyLounge - программирование на Python и всё о IT
Рет қаралды 12 М.
Просто о SOLID (Принципы SOLID)
15:54
webDev
Рет қаралды 215 М.
Always be more smart #shorts
00:32
Jin and Hattie
Рет қаралды 10 МЛН