Interesting and informative. I've used enums many times in my code, but now I see using an interface with classes implementing it would have been a better choice in many situations. I would just change one thing in the Liskov Substitution Principle example: Seeing specific Video member variables like title, likes and views under a class named VideoManager seems wrong to me. Instead, I would have left these member variables under the Video class and move the playRandomAd() method to VideoManager. PremiumVideo would still inherit from Video. That way, you also remove the need to duplicate the getNumbersOfHoursPlayed() in every subclass.
Your videos are some of the best OOP videos I found on Youtube. I binge watched most of the videos, and they are one of the clearest OOP tutorials I have seen.
This video is amazing. Your channel is underrated, you're great at teaching
Perfectly explained in 11 minutes! Thanks!
Best video I have ever seen on SOLID design principles!
best and straightforward video I have watched on this topic. Thanks you
Your videos clear all my doubts. Thanks
7:20 wouldn't just be better if we could just create a base class that doesn't have playRandomAd methods and have both video and videoPremium class inherited it and implements playRandomAd inside video instead. Does that make sense? So we have the option to either override methods from base or not and also helps us reducing number of lines code.
The solution in Liskov substitution principle with VideoManager breaks the Single Responsibility Principle, now one class is responsible for two totally different behaviors.
thank you, I am always struggling with that in high level applications. The part with Dependency Inversion Principle helped me alot, well can you do a example with best practices lets say with have 5 moduls?
This was actually well explained
This is an amazing video. Very easy to understand with examples. Please keep it up!
I am reading Clean Code and one thing I noticed is that Robert C. Martin recommends to avoid words like manager, processor, data or info in the names of a class, i.e. VideoManager at 7:14
These videos are extremely helpful, they deserve much more views. You are amazing! One question, doesn't the VideoManager class (at 7:16) violate the Single Responsibility Principle? I'm really not sure, it just seems a little strange. Does "managing a video" count as a single responsibility? Isn't that a bit too broad?
The most underrated channel ever!
You are God sent. Great content. Kindly recommend other channels that teach the way you do.
7:17 how can I use the methods of manger class without creating an instance of that class, those methods are also not declared as static too..
Underrated channel . Like and shared. Thanks a lot for the efforts🙏
In Liskov's substitution is same to say: replace the child by its father or replace the father by its child? I see both ideas explaining this principle on the web
@stphdr2771