Just stumbled upon this gem in 2024, and 8 years down the road, this video remains an absolute treasure! The explanation is beyond awesome - PURE GOLD! 🌟 Grateful for the timeless content! 🔥
I cannot stress enough how good this video is. A lot of tutorials don't bother editing the empty space between sentences, but you do. Props, and I hope your future is bright.
This playlist is almost 5 years old and yet it is THE BEST playlist/video on Design Patterns. Thank you so so much for making everything so easy to understand.
Yeah best, most understandable videos I've seen and the lighting is intimate like we're right there in the room and he's explaining it simply like an awesome friend lol
@johngreen said something like this... He is a professor. @Christopher, a professor that we choose to listen and follow. This take us back to the begining of the master and aprendiship relations. Where the student choosed the master and the master choosed what will became of your teachings.
Honestly thank you thank you thank you - I feel like crying right now at how much I *didn't* understand at the beginning of the video and how confident I feel now at the end of the video.
In the middle of the video I just stared at your messy board and went crazy by the fact I understood every single word and every messy arrow!!! How did you do it??? Man you're blessed, you're a perfect teacher!
That's is great! I've started the video just to watch it for a few minutes, just to check it out and watch it later. But I couldn't stop, it is so good! I love how you explaining, it looks like you are obsessed with it and it's great. Please continue doing that!
Very nice videos. The way you explain makes people sit and listen what you are speaking. That's very good. Also, you can give the ducks the power to be invisible. lol...
Thank you very much for taking the time to comment. It makes me very happy to hear. About the ducks... you are the invincible programmer and only your imagination shall dictate the limits of your force. I support your invisible ducks :)
@@ChristopherOkhravi thank you so so much for this absolutely amazing video series on design patterns!! took a course at my university about this but never fully understood the design patterns until i binge watched your videoseries!! your are awesome!
Chris! Total Legend!! Your technique for taking cold "text book" definition, and turning it into something human and understandable is utterly brilliant. Wish I had a tutor or mentor like you to learn from. Thank you so much for dedicating your time to make these video's. I subscribed, liked, and will spread the word to my dev team.
This is the best explanation i've gotten throughout all my pattern researches on youtube. The explanations are so detailed as though it was done under the assumption that the views are new to design patterns overall which is honestly the best way.
I have cracked Low Level Design interviews in companies like Microsoft, Amazon, Atlassian, Flipkart, etc with the help of your videos. Your videos are really helpful. Keep up the good work.
Thanks Christopher! Your way of presentation is so expressive, it feels that the knowledge is being 'injected' into the mind. Please keep posting similar videos over other topics of Computer Science.
This playlist really helped me during my studies. Now, after finishing my studies and coming back to this playlist to refresh my memory, I can see I have forgotten quite some things. Thanks again for making me learn and having fun while doing it!
bro, where were you till yesterday. I found this video a few years too late but I am glad I found them. such a perfect and simple explanation. I had that "aha so that's what it meant" moment.
Can't thank you enough man! I had a design problem to work at somone suggested to use strategies to solve it and I was totally blank! This has given me a great prespective. Going to watch the entire series, one pattern a day is the aim! Thanks again!
For years I've been searching for a good design patterns course, luckily RU-vid recommended your videos and finally I am able to understand, keep going man, you helped me a lot. I was afraid that you quitted RU-vid like every other programming teacher, after seeing this video was uploaded 3 years ago 🤛🏻🙏🏻
So many positive comments, all so well-deserved. It seemed all over the place while I was watching it but it just all comes together so well. Only comment is that "quack" is normally pronounced to rhyme with "black", "snack", "sack" and "track". Great video!
I've spent so many hours trying to understand how to apply the strategy pattern. Thank you for both explaining it with UML and pseudo code - makes the whole difference!
If only I would've received this level of explanation and visualization while I was in the university, my knowledge and understanding of these patterns would be so much better. I'm lucky that the poor quality of education was still able to land me a job as a software developer, which I've been doing as a profession for over 5 years now, but I'll be watching this series through because I think I would learn more from these videos than I did in the university. I'm trying to be optimistic it's still not too late to expand and deepen my knowledge.
You are a legend. I literally tripled my income by watching your videos, implementing and understanding what you're talking about and demonstrating it to a potential employer. Your videos changed my life! Thank you so much!
Man, this video was so helpful! At first, when you read what the pattern was I thought I kinda understood it, and 10 minutes in I realized I had no idea what the pattern really is, but by the end of the video I really did understand it. You're great dude!!
Chris, I watched you videos about design patterns to prepare for a class that I skipped most of it is lectures due to the depressing online teaching, and I just finished my exam. I just want to thank you so much for the amazing lessons you taught me. I was able to refactor the codes easily because you explained the concepts in a very understandable way. I wish you all the best 🧡 *depressed eng student*
I've read the GoF book a couple times, but for some patterns, never really got them Your series really made them clear now Thank you for a great series on the design patterns!
Every time I learn about a design pattern, it's something I started figuring out for myself through trial and error over the years... But putting a concrete name on these strategies and patterns helps so much
This is a super playlist. As a complete newbie to design patterns I was lacking of some basics, you made me understood the Strategy Pattern, Interfaces, UML and also some hints on naming... In 30 minutes. Thank you!
This is the clearest explanation I have ever seen. What I needed was to understand how the design came about and how it is implemented and how the implementation works. You hit all these points so clearly. I have struggled understanding design patterns for years, how they are implemented and works. Keep it up. Super clear, concise.thank you. 10 stars!
I can barely realize this video is 35mins long, you caught my attention the whole time, your explanation goes beyond simple boring design patterns theory, thank you sir, you've got a new subscriber.
Great job, even for a no-native speaker who is learning english like me, this was really helpful. I understood everything! I'll be waiting for more videos!
Robert Juamarcal thanks! Makes me glad that it's understandable :) Btw ofc also I am a non-native English speaker. But we get better day by day right? :)
Your explanation is soooo good. I do not come from a CS background and recently was recommended by a friend to read this book, head first design patterns. I read this part of the book twice and was still digesting it. But your video made it all make sense. Really want to let you know how meaningful your video is for me and people like me. Thank you
Man, I Work at KingHost, a WebHosting Company from Brazil, I'm a Junior PHP developer and I needed to make a code review from a collegue that used the dessign pattern strategy. I never understang it right, until I saw your video. Man, you're great! I completely understood the point of using strategy with only 35 minutes listening to you. I will watch all your videos about design patterns to learn more and I've subscribed to your channel. Please, keep up this good work, a hug from Brazil
Very very nice. This is the type of computer science/ software engineering content I was looking for on RU-vid. Most is catered to people just starting out, which is fine, but content like this is very welcome.
I've must have watched this video a million times and it just hit me today that this video also illustrates a very powerful design pattern: Null Object Pattern. NoQuackBehavior and NoFlyingBehavior are basically Null Objects.
I'm usually a book guy, as most of the tutorials are either hard to follow or just the explanation is not good enough. But thanks to this video I can finally say, that I fully understand the strategy pattern. Thanks you!
I’m glad to hear and I think you’re doing the right thing when challenging yourself! I tend to consume a lot of content that’s above my level 😊 I come back to the videos every now and then and eventually it turns out that I perfectly understand most of it 😊😊 Thanks for watching!
I wish I had a co worker like you ! Amazing video, so much clarity, depth with examples and yet so simple :) I'm going to watch other videos like it were a season of Game of Thrones :D One suggestion though, I was really hoping to see an example code of how I'd actually instantiate the Duck class now through code since I have all the options for composition.
OMG this content is the most simplifying design patterns. I don't even stress about it and mind blow when you write simple code. Thank you for your time and video.
coming from javascript, and having read a lot of different articles over this subject, i can say that your explanation about design patterns in OOP is so far the clearest explanation that can be found online. You did a great job. Thank you!
Watching this was a blast! Thank you so much for this video. I'm looking forward to the rest of the series. Great job stressing on semantics. I think we need to further emphasize on that in our dev communities
Thanks! :) I agree. She's got some really inspiring talks. The "Nothing is Something" talk is on my mental list of top programming talks. In the sense that so many things just suddenly "clicked" for me.
Just started looking at design patterns for interviews and am a little confused. Then came across your videos and they are amazing. Clearest and most simple explanations out there. Godsend!!
I'm sure I've also just progressed far enough in learning that I am able to understand better than I used to, but this is the first explanation of a Design Pattern that I completely followed without getting lost, and that's gotta be to your credit too. Thank you for this!
That pattern simply turns algorithms into objects and so give you full control of dependencies. Hierarchy doesnt give you full control because of the Liskov Subistitution principle, the subclass must have the properties of parent class.
The thing is though, strategies aren't all good. They are useful when the equivalent hierarchy would result in people creating lots of subclasses of your class, and in those subclasses sharing lots of code between each other in a way that makes doing it as a hierarchy complicated. But in my experience that doesn't happen that often.
@@globalincident694 - In my opinion, the Liskov Substitution principle points out a flaw/limitation in OO languages, rather than a principle. In real world programming, your rarely get hierarchies/taxonomies that can obey LSP, yet remain useful. I like the concept of "adhoc polymorphism" in languages like Haskell. Model the hierarchies/taxonomies as best you can, but let the differences exist. The compiler will tell you when you go wrong.
@@planomustang1 I wouldn't say Liskov substitution is a flaw. It's present to an extent in Haskell too - if you are creating an instance of a class, the instance also needs to have the methods of the parent class. If you're having a problem with it, that usually means there's a flaw in your class structure - maybe that class shouldn't have that method - rather than a problem with liskov substitution.
@@globalincident694 No. Haskell allows adhoc polymorphism. In other words, you don't have to implement a parent's method, if it does not apply to the child. The compiler will only complain, if something tries apply the parent method to the child. Javac/C++ will complain at compile time, though there is no evidence the method is needed on the child. That is why LSP points to a problem, rather than a solution. OO models are too strict. Adhoc Polymorphism is a good thing. FYI, I learned about LSP in 1996.
Not only the way how you explain and not how manage the video but how you exchange the information... its like you though the information to my brain. Really effective, only I can say that brilliant!
Best professor ever seen After these videos no need to see the textbook for design patterns i'll suggest only him . i wrote my exams well after completing the videos
Holy shit thanks alot Mr.Bean!! So I already kinda knew what the strategy pattern was, but this whole video made it all ALOT clearer. I appreciate it greatly!
CHRISTOPHER!!!!! My Man!! I love your energy, you break this down SO WELL!!!! I can't say Thank You, Large enough or Loud Enough. You Rock!!! *I know it's been 5 years but hope you see this THANK YOU!!!!
I just found this channel and your videos are like "Answers" to the questions. You are so good at explaining even complex things so easily. I see you are not active since many years from now. Not sure what you stop making videos. But just want to let you know that you are awesome !! Where are you man !!!
A lot of design patterns use abstract classes or interfaces to achieve what delegates/lambdas do. The classic Gang of Four book was published in 1995, so C++ was the standard of the time, and it didn't have delegates/lambdas yet, where the important part was to define the signature of the method. C++ could also use function pointers, but function pointers were just pointers and couldn't have explicit method signatures, hence the use of interfaces. It would be another decade or so before lambdas became common. So yeah, it's totally legit - and a lot lighter - to inject a lambda instead of a full blown class/interface hierarchy.
A lambda is an implementation of a one method interface. A lambda maps to a class with no name. You might want to check out c++ weekly which had a discussion on lambdas. Passing in a lambda is the ultimate strategy pattern example.
@@uumlau could you explain to a c# noob, how lamba's replace interfaces or this pattern? to me a lambda just seems like a nice way to use something once and move on.
@@Layarion Well, if a method takes an interface as an argument, a concrete instance of that interface can contain a method. The strategy pattern can be implemented by allowing any number of different concrete classes containing different methods (strategies). It is possible instead to take a Func or Action and supply different methods that way. In all cases, the method needs to have the same signature, but otherwise the particular method to be used can be specified at run time. Sometimes an Interface or Abstract class is more efficient, especially if you have a large family of methods with different signatures to specify for each case of the strategy. Usually, however, the need for a strategy pattern is a simple decision to replace a single method, not a family, in which case a delegate can be used (declared as a Func or Action), and then whatever lambda you send just needs to have the correct signature. I've used this in real life to implement business rules dynamically, where I have a lists of business rules that are declared as lambdas (which lets me edit/modify them individually as specifications change without rewriting code or decision trees), and I can just run a foreach of the appropriate list of rules against the state of the application. Notice how this not only allows for multiple families of rules, it is far more flexible than an Interface or Abstract class, where I would have to declare each new method in the Interface/class. Instead of declaring an extra method, I just add/remove from the list of lambdas, and the signatures of methods and business logic evaluation doesn't change. Only the specific lambdas change. Combine this with commenting each lambda with the English version of the requirement, and this makes for very readable code that even a novice can easily modify.
Sir, you are really my GURU now, I struggled a lot to get this kind of Guide. Basically I from poor family, finished my engin in a small college, but interested to learn this DP from expert like you. Now it got fulfilled after watching your first video. Thank you so much sir. Om Guruve namaha. :)
dude... thank you so much i'm learnig my self to code for video game & 98% of free tutorial are 16y old kid using coding strucures that look like what I did on my calculator when I was at school. Don't loose my time here
Hands down the best series of videos on design patterns. Referring to his videos I have been able to clear my design patterns examination with flying colours. I would recommend his series anytime to anyone. Thank you Christopher Ockhrawi for this wonderful series...
This video was the single most effective resource I have seen. I was sooo stuck trying to wrap my head around how to use Strategy Pattern to solve this problem I was working on. My intuition lead me to Strategy Pattern but I didn't realize how much I didn't understand. Thanks you Soo Soo much!!!