SOLID: принципы и паттерны проектирования | Объясняю простыми словами | Примеры на Python

  Рет қаралды 4,758

Сурен Хоренян

Сурен Хоренян

Күн бұрын

Пікірлер: 36
@mzaytsev
@mzaytsev Жыл бұрын
Лисков не о том, а о замене функциональности в наследнике
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
Так я же как раз показываю, что можно заменить содержимое метода в наследнике, главное чтобы он был совместим с тем, что ожидается от родителя 🙂
@mzaytsev
@mzaytsev Жыл бұрын
@@SurenKhorenyan У вас там два разных метода, с разными названиями (для кота и льва) и их вызов в сторонней ф-ии. Это проблема никак не связана с принципом Барбары Лисков, это просто какая-то сторонняя проблема в коде которая могла возникнут по десятку причин (ошибка проектирования интерфейса, проблема отсутствия адаптеров, нарушение связанности слоёв абстракции и пр.). Принцип Барбары Лисков гласит, что не стоит изменять функционал наследника так, чтобы его использование вместо родителя приводило к ошибкам или не очевидному поведению. Пример: у вас есть класс Person с методом moveForward(), который перемещает персонажа на клетку вперёд. Потом вы создаёте наследника StandingNPC extends Person и у него переопределяете метод moveForward() так что он никак не перемещает персонажа. Вот это и есть нарушение принципа Барбары
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
@@mzaytsev Спасибо, это хороший пример! Я не догадался привести такой пример, в будущем учту. Надеюсь, зрителю будет понятна сама идея и в том виде, что я показал
@mzaytsev
@mzaytsev Жыл бұрын
@@SurenKhorenyan Удачи вам Сурен
@mzaytsev
@mzaytsev Жыл бұрын
@@SurenKhorenyan На всякий случай отпишу лучше ещё тут вторую ошибку. Принцип разделения интерфейсов он не в выделении общего наследника и превращении его в интерфейс (это не верное понимание интерфейса), а в выделении множества интерфейсов на каждую характеристику будущего класса. Класс - это всегда некоторая сущность (даже если класс абстрактный) Интерфейс - это характеристика (в вашем примере это было бы два интерфейса, что-то вроде SmsSendible, EmailSendible) и уже имплементация каждого интерфейса в классах PDA, Smartphone и пр. Однако на этом примере сложно понять в чём плюс этого подхода, его легче рассмотреть на примере когда возникает проблема необходимости множественного наследования, аля Horse extends Animal, Vehicle
@timurotube
@timurotube Ай бұрын
Супер контент, как всегда, собственно. Сурен, просто молодец
@SurenKhorenyan
@SurenKhorenyan Ай бұрын
@@timurotube спасибо большое! Очень приятно 🥰
@antonzuzlov2046
@antonzuzlov2046 Жыл бұрын
крутые примеры, но я помню их не понимал до определенного опыта. было приятно вспомнить
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
Спасибо! Да, хоть какое-то понимание программирования нужно, чтобы понять примеры
@kseniasunny8910
@kseniasunny8910 Жыл бұрын
Спасибо, заценила мем с котом)
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
Хаа, пожалуйста!
@antonzuzlov2046
@antonzuzlov2046 Жыл бұрын
Супер контент, жду побольше подобного) особенно может быть что-то связанное с fast json api
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
спасибо! про FastAPI JSON:API обязательно сделаю ролики. мы как раз сейчас готовим крупное обновление библиотеки, будет о чем рассказать 🙂
@photo_graf_khv
@photo_graf_khv 2 ай бұрын
Спасибо 🤝💪👍
@SurenKhorenyan
@SurenKhorenyan 2 ай бұрын
Пожалуйста!
@bernardsoul8936
@bernardsoul8936 3 ай бұрын
Ещё было бы неплохо на реальных примерах разобрать
@SurenKhorenyan
@SurenKhorenyan 3 ай бұрын
@@bernardsoul8936 да, вполне
@MsSkylines
@MsSkylines Жыл бұрын
Думаю, на деле функция включения лампочки будет реализована конкретно под лампочку, а не под все световые приборы. Хотя мб в рамках одного производителя и под все)
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
Всё зависит от ситуации. Лампочка же тоже бывает разная. Или представьте у вас дома один выключатель для лампочки, а другой для вентиляции. Выключатели же одинаковые. Так и в коде может быть пересечение. Но в частных случаях, конечно, может быть по-разному
@ГубкаБоб-р8ъ
@ГубкаБоб-р8ъ Жыл бұрын
Я всегда думал что D это don't repeat yourself
@ИннаЛиксакова-о4н
@ИннаЛиксакова-о4н Жыл бұрын
рассказываете топ, но очень быстро, на 0.75 скорости смотрится хорошо
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
Хах, извините 😅 Хорошо, что есть замедление
@АндрейСусарев-ю3л
@АндрейСусарев-ю3л Жыл бұрын
Как все это ПОНЯТЬ ?!!! (Новичку) 😂😂😂😂😢
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
Хмм, а что именно было непонятно? Неужели "вообще ничего непонятно"? Про какой принцип было непонятно? Догадываюсь, что если вы совсем не знаете про классы, то сложно понять всё, что было про наследование. Может быть понятие интерфейсов не очень понятно. А ещё?
@АндрейСусарев-ю3л
@АндрейСусарев-ю3л Жыл бұрын
@@SurenKhorenyan я только начинаю входить в программирование. Поэтому мне и не понятно. Простите.
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
@@АндрейСусарев-ю3л ничего страшного! Я рад объяснить, вы только скажите, что именно непонятно. Соглашусь, если вы только-только начинаете, может быть не всё понятно. Но когда вы будете сталкиваться с подобными проблемами, уже будете узнавать в них знакомые паттерны и легче находить решение
@archi-zeus
@archi-zeus Жыл бұрын
Со временем будет понятнее и понятнее, просто продолжайте развиваться, изучать чужой код, и разрабатывать свой, и все придет со временем!
@SurenKhorenyan
@SurenKhorenyan Жыл бұрын
@@archi-zeus всё так! Главное не останавливаться
Все о принципах SOLID
16:07
Merion Academy
Рет қаралды 34 М.
How Much Tape To Stop A Lamborghini?
00:15
MrBeast
Рет қаралды 203 МЛН
Симбу закрыли дома?! 🔒 #симба #симбочка #арти
00:41
Симбочка Пимпочка
Рет қаралды 3,8 МЛН
Просто о SOLID (Принципы SOLID)
15:54
webDev
Рет қаралды 222 М.
ЭТОТ Паттерн Спрашивают на 99% Собесов
14:19
Принципы SOLID / С Примерами На Python
12:36
PyLounge - программирование на Python и всё о IT
Рет қаралды 15 М.
Паттерн Singleton (Одиночка) в Python
36:55
Python Russian
Рет қаралды 12 М.
ООП вопросы на юнити собеседовании
14:11
Максим Крюков
Рет қаралды 44 М.
Как работать с классами в Python и для чего они нужны
22:04
Senior Tester | Евгений Окулик
Рет қаралды 10 М.
How Much Tape To Stop A Lamborghini?
00:15
MrBeast
Рет қаралды 203 МЛН