Decorator Pattern - Design Patterns (ep 3)

  Переглядів 469,790

Christopher Okhravi

Christopher Okhravi

7 років тому

Video series on Design Patterns for Object Oriented Languages. This time we look at Decorator Pattern.
► The playlist
• Design Patterns in Obj...
► Head First: Design Patterns
geni.us/nlbA6
► Design Patterns: Elements of Reusable Object-Oriented Software
geni.us/PsXmo
💪 Patreon Community
/ christopherokhravi
📚 Products I Recommend
geni.us/71ZXF

КОМЕНТАРІ: 843
@bot-bot
@bot-bot 7 років тому
Hey Christopher, when you mention you use the Decorator pattern when trying to deprecate the usage of some class, wouldn't an Adapter/Facade pattern be better for that? I'm new to design patterns so I'm just trying to analyze it a bit :) BTW, when is the next pattern coming out?
@ChristopherOkhravi
@ChristopherOkhravi 7 років тому
Excellent question! While filming, this question struck me as well. It's really quite hairy. They are deviously similar and I keep forgetting the nuances :) TLDR; I agree with you. But, let's define the concepts... 1) The adapter adapter pattern changes the interface but does not change the implementation. 2) The proxy pattern changes the implementation but does not change the interface. 3) The decorator pattern changes the implementation but does not change the interface. 4) The facade pattern is a high-level level abstraction over low-level components, where the interface is changed. So, I guess it boils down to proxy vs decorator. The deprecation example I gave could, depending on the scenario, probably be technically considered decorator pattern. But then again, it's a too simplistic example that doesn't really take advantage of the true power of decorator pattern. So I agree with your comment. Further, my example becomes even more silly if we look at it in a statically typed language (I usually work in dynamically typed languages and was thinking of that when I blurted out the example). In the decorator pattern we have the two interfaces Component and Decorator. The old class we want to deprecate is a Component, but if we were to use Decorator Pattern to deprecate it then the new concrete class would have to be a Decorator which in turn is a Component. From an abstraction point of view, this is actually a good thing because the abstract Decorator could then make sure to delegate all method calls to the decorated Component, which leaves the concrete Decorator with the job of only implementing the few methods it wants to change. But then again... this is probably massive overkill, and you'd be better off just throwing in a proxy where the proxied object is dependency injected into the proxy. Interesting excursion :) Thank you for the comment. I need to think my examples through a bit better before rocking it :) Ps. I've got an older video on Adapter vs Facade vs Proxy here: ukposts.info/have/v-deo/oIR0Z6ikiXh62ac.html
@bot-bot
@bot-bot 7 років тому
Thank you for a very detailed and educational answer :) I still haven't touched the Proxy pattern which I'll do next and that is probably the reason why Adapter and Facade were the first that came to mind. For now it makes sense why and how to use the Decorator for deprecation even if it is an overkill. It's good to have these examples in your videos because they give us the opportunity to think about them and ask when unclear, so keep it up, it's all good :) I enjoy the Code Walks as well, especially liked the one about VR/AR and moving coding away from the monitor+keyboard environment!
@theesunnlightt2268
@theesunnlightt2268 6 років тому
Christopher Okhravi, Thank you very much for these amazing videos.
@shanmugamsekar4044
@shanmugamsekar4044 6 років тому
In this case , i think proxy pattern makes sense. Awesome video Chris .
@borjagomez1663
@borjagomez1663 6 років тому
BEST saxo ever
@serkangoktancelik5081
@serkangoktancelik5081 5 місяців тому
This man's explanation is so much better than any prof I have in uni and all other UKpostsrs. Thank you.
@jean_luc_retard
@jean_luc_retard 6 років тому
dude, I haven't even noticed when almost an hour passed. I was never this interested and focused on a video before. Good job. Excellent teaching flow.
@sshanzel
@sshanzel 4 роки тому
This is true. I have never been patient enough to watch a vid for a whole hour and still wanting to watch the next one
@tanveerhasan2382
@tanveerhasan2382 2 роки тому
@@sshanzel i concur
@alnm951
@alnm951 9 місяців тому
Same for me!
@FlipYourLearning
@FlipYourLearning 2 роки тому
This series is becoming one of my favorite coding tutorial series here on UKposts, as a combination of the delivery and the value. Every video keeps me engaged from beginning to end, and each has all I need to start applying the concept to my own projects. Thanks for making them.
@Anonymous-vd1pb
@Anonymous-vd1pb Рік тому
noob
@rizvinazish
@rizvinazish 7 років тому
One of the best explanation in UKposts pattern videos, classic!
@ChristopherOkhravi
@ChristopherOkhravi 7 років тому
One of the best comments on UKposts :) :) ;)
@smilerelax5265
@smilerelax5265 4 роки тому
execuse me this is the best not one of the best. believe me i went trought them all.
@harshtalwar9615
@harshtalwar9615 4 роки тому
@@ChristopherOkhravi (One of the best comm......) 😁 yes, it is true.
@sshanzel
@sshanzel 4 роки тому
Not one of the best. But actually THE BEST OF EM ALL
@fordsim7
@fordsim7 5 років тому
I love how the cat wanted to learn about the Decorator pattern at the end. Love the videos by the way
@XxxGuitarMadnessxxX
@XxxGuitarMadnessxxX 3 роки тому
I'm EXTREMELY happy that I recently found your channel. Been watching your design patterns playlist in order and I've been actually getting pretty excited about implementing them in my code! So far, I've found the talks about Observer and this one about decorators to be suuupperr helpful with a thread-safe logging library I'm making for use in other personal projects where the observer pattern is used in managing multiple loggers and progress indication bars and this decorator pattern is used in the logger sinks and progress bar attributes. Again, Thank You for making easy-to-digest videos as they have been super helpful in grasping new concepts so far!
@imsoanju
@imsoanju 5 років тому
I absolutely love listening to you. Not only you explain everything in a great and understandable way but you also have such an awesome vibe going on. Love it.
@JeremyMoritz1
@JeremyMoritz1 3 роки тому
Outstanding! Thank you so much for all of the quick cuts throughout the video. This shows great respect for your audience's time and makes the content much more interesting, digestible, and entertaining!
@Adi-mj3cb
@Adi-mj3cb 3 роки тому
Your way of repeating things over and over again is absolutely brilliant, keep doing this. Well done. I thank you. Also, the very last part where you showed how to actually implement it - that is very important as well! I was wondering if that would show up at it thankfully did. Absolutely wonderful job all around.
@puneetsingh6782
@puneetsingh6782 2 роки тому
Hey Christopher, thank you! your prodigious energy, and no-beating-the-bushes style of teaching is awesome. You convey your ideas very clearly, and succinctly
@solo-angel
@solo-angel 4 роки тому
OMG! You're an amazing teacher! So energetic and you discuss everything in great details and clearly! Please, make more videos!
@yussufclark9390
@yussufclark9390 5 років тому
This is really good stuff. Please don't stop making these videos, unless you've already exhausted all the information of course. You're a really good teacher and you're easy to follow.
@roman_mf
@roman_mf 2 роки тому
I've just started to dip my toes into design patterns and boy am I glad I found this video. Excellent explanation. Heard about the book but now I'm more motivated to start reading it. I'm sure it will go super well together with your videos. Thank you!
@kareemjeiroudi1964
@kareemjeiroudi1964 4 роки тому
You asked us in the video if you should change anything. Please don't change anything. Your videos are goddamn awesome! Just keep making more videos. The community needs people like you who have the knack to explain things the way you do. Man, you are 100 times more valuable than all my university professors put together. World's best CS instructor!
@Serg13975
@Serg13975 3 роки тому
This channel is exactly what I needed. Thank you for existing. You are doing a golden job!
@austinbryan6759
@austinbryan6759 5 років тому
Rewatching this again, and wow, it's so good! You explain things so clearly! Keep it up :)
@bernong1
@bernong1 2 роки тому
This the the This video I have watched. This is amazing. Clear, concise, hits home on all the points to clarify the design and how it is implemented. I have not been able to get this clarify for years by reading books. Past 2 days of watching your videos was time well spent.
@benjamin_fdw
@benjamin_fdw 4 роки тому
You are doing an amazing job! Great content, well explained. You seem to master these topics but you stay very humble and you ask people their opinion about your explanation and implementation/illustration. Plus I like your ability to talk so fast and stay understandable at the same time. That's mind-blowing
@jonp9511
@jonp9511 7 років тому
Christopher, thank you so much. I finally came across your channel today when searching for info on the decorator design pattern(liked and subscribed). It is exactly what I have been looking for. I go to school online and sadly there is little to no actual "face-to-face" instruction. By that I mean, we have assignments, and are essentially left to own to figure out how to work through them. In fact the class I am taking now does not even have an accompanying textbook. I don't learn well by relying on slow email correspondence ( I am a busy man) to drive some complex principles home. Sometimes I need to have things broken down into very simple terms and viewed from several different angles to finally sink in, so that I can actually use it in practice and not just theory. Your approach here is exactly what the Dr ordered. Again, thank you very much.
@kopilkaiser8991
@kopilkaiser8991 6 місяців тому
Thank you for taking the time on explaining the Decorator pattern. I've been introduced to it for the first time on this video and it is all thanks to you. I found this resource helpful and useful at the same time, you are very good in being able to illustrate all the different perspective to this subject.
@jareeq
@jareeq 3 роки тому
Christopher, your explanations are among the best , multi level references, kept my mind focused and thanks of that i can simply remember more. Thank you.
@milachekua
@milachekua 6 років тому
Fantastic! - always saving out time by editing the video - mention a lot of importent things (even those that not always related) - your emotions that helps to understand and remember much better Thank you so much for creating such useful videos.
@typsy1981
@typsy1981 6 років тому
You really feel and understand very clear what you are saying about. Good job Chris! Great explanation!
@abdulquadiransari7476
@abdulquadiransari7476 11 місяців тому
The best part of this video series that Christopher Okhravi is teaching from a book. At first these vidio series were not making any sense to me. But after I read the chapter from the book and came back to this video I understood the concept even better. Thanks Christopher for making videos on UKposts. I wonder where have you gone since 6 years now !!!!
@SwethaSaseendran
@SwethaSaseendran 2 роки тому
I would recommend this channel to all my collages who wants to learn about design patterns. You are doing an amazing job Christopher. Thanks a lot. :D
@MauricioAvellar
@MauricioAvellar 2 роки тому
Awesome video! Extremely detailed, enlightening and educative. Can't wait to watch them all.
@shanm4629
@shanm4629 3 роки тому
More than UKposts supporting you, its actually you are helping youtube to provide such a quality content to public. Thanks for sharing this.
@Stehocke
@Stehocke 4 роки тому
Nice video. I am teaching programming and your whiteboard + cut seems to be the key. The pace is perfect. Usually i finish the class with a nice board picture provided in a confuse way or i just need to long to draw and write the illustrations.
@sushmitagoswami7320
@sushmitagoswami7320 2 роки тому
A huge respect and admiration to you for sharing your knowledge in such a lucid way. I would request if you can also include some real life use cases at end of each pattern, it would help us tremendously.
@andrewoliveira6370
@andrewoliveira6370 7 років тому
Nice explanation! I am reading Head Design Patterns and your video has helped me a lot! Thank you!
@TheIdan2108
@TheIdan2108 6 років тому
Hi, I just wanted to say that you explain this material very well. Thank you!!
@rob876
@rob876 Місяць тому
I've never heard a better explanation of the decorator design pattern. Thank you.
@loganfeiler2412
@loganfeiler2412 3 роки тому
You do an amazing job explaining these concepts! Thank you very much for the videos.
@johnconnor9787
@johnconnor9787 5 років тому
The way you explain the material is awesome!
@anandaapatel
@anandaapatel 7 років тому
Hey Christopher - Really Amazing explanation. I just viewed Observer Pattern.Its awesome. Waiting for all 21 design pattern from you soon.
@ryanm.9326
@ryanm.9326 4 роки тому
Thank you so much for these videos. You are awesome at explaining design patterns in a way that is easy to grasp.
@nickpappas6109
@nickpappas6109 6 років тому
Damn! We literally did this exact lab for class a few weeks ago but I just found your channel. Super helpful, thanks
@plogramer
@plogramer 5 років тому
Chris - This is the best well explained design pattern video. Thank you!!!
@fixer8173
@fixer8173 5 років тому
This is absolutely fantastic explanation, thank you very much for this tutorial series.
@sameersoni1735
@sameersoni1735 3 роки тому
Thank you, Christopher! I really appreciate your work. What an explanation :) You made things very simple for us.
@alexivonkuciak3786
@alexivonkuciak3786 Рік тому
Best explanation I've heard of the pattern, Christopher, you might have taken a break from UKposts but you have a gift for teaching!
@timofeipanchenko9884
@timofeipanchenko9884 2 роки тому
These lessons feel very good to watch. Also very educational. Thanks man!
@sergioshev
@sergioshev 6 років тому
Thank you for so nice work you are doing! Was a honor to view your teaching. Very useful.
@a-aronpaulluminding3133
@a-aronpaulluminding3133 7 років тому
Very informative, thank you for the explanation. Looking forward on the 4th EP. Regards from the Philippines!
@wobblyrampack9655
@wobblyrampack9655 7 років тому
Superb! Great explanation and your reasoning at the end with more appropriate scenarios makes a lot of sense!
@Gobberfisch
@Gobberfisch 6 років тому
the way you are teaching is genius, I watch one video and get it all, no need to look anything up afterwards
@truefalser4555
@truefalser4555 5 років тому
Your presentations are so good, that there will be no more interview questions related to these patterns, since everyone knows them if watched your vids:)
@konzinovmaverick4539
@konzinovmaverick4539 7 років тому
Very well explained! Using simple words make this pattern looking easy to understand ! Good job man! Waiting for the next one ! 👍👍👍
@firuzafynchina9208
@firuzafynchina9208 Рік тому
What a cool tutorial. thanks for a comprehensive tutorial and charisma. 50 mins passed so fast!
@yairshahar1560
@yairshahar1560 7 років тому
hey Christopher, great explanation. You have unique way for explain complicated things to be easy understand, thank you very much ! I am looking forward for the next chapters...
@ChristopherOkhravi
@ChristopherOkhravi 7 років тому
Thank you for the kind words. And thanks for watching.
@igori3532
@igori3532 5 років тому
Amazing explanation. I had also the same thought about list of addons instead of decorator.
@user-gb7cp5vz4q
@user-gb7cp5vz4q 5 років тому
I never seen any better explanations of anything! Thanks a lot!
@MahmoudRKeshk
@MahmoudRKeshk 3 місяці тому
That was awesome! A detailed neat explanation ... Now I got how the linq operators work under the hood ! This pattern with method chaining in C# will be absolutely great. Thank you !
@tutanchacon
@tutanchacon Рік тому
One of the best explanations I've ever seen. You are a great teacher
@8uddishh
@8uddishh 5 років тому
I cleared three interviews back to back ... coz of this man... keep it up...
@kkthatik
@kkthatik 6 років тому
Awesome! After several tries now I understand it better here, the decorator pattern. Thanks.
@darkthrongrising5470
@darkthrongrising5470 6 років тому
These things are hard to explain so I appreciate the effort you put in to articulating these concept, you have helped me a great deal and Im beginning to see that I have been working with a lot of these patterns already and didnt know it. For instance, Ive been working with the Event Emitter(and Electron IPC main/renderer) object in Node and per your video on Observer Pattern I was instantly able to recognize that Event Emitter was based on this model and also gave me a great deal more insight into the power of that particular class. Also Angular 1 and 2+ make use of these patterns which now I understand so much more thanx to your vids.
@naturalsmen1
@naturalsmen1 2 роки тому
Clear and comprehensive. Thank you for your sharing!
@pcccmn
@pcccmn 3 роки тому
Came here after reading and leaving Head First's Decorator chapter confused. This video makes everything super clear! Thank you.
@sarahmostafa3984
@sarahmostafa3984 6 місяців тому
Thank you for the amazing explanation, I finally understood the decorator pattern
@heraldo623
@heraldo623 4 роки тому
51 min to explain decorator, I never seen so long explanation of a pattern. That's excellent
@sukalpa6605
@sukalpa6605 7 років тому
Hey Dude, I was trying to get my around the "Design Patterns", and my search came to an end here. I love the way you explain the concepts. I can't wait for the next pattern in the series. Please post them ASAP. Already I subscribed t the series.
@helloabhijit
@helloabhijit 7 років тому
hey Christopher , videos were really awesome. It helps me understand and remember the concepts in a much better. Eagerly waiting for the next one.
@sudhakark91
@sudhakark91 5 років тому
Never heard better explanation than this about design patterns.. you are awesome..
@EaZySaSo
@EaZySaSo 5 років тому
And here I thought I would never get Design Patterns! you are AWESOME!
@brtk7
@brtk7 6 років тому
@Christopher Okhravi You are good teacher. Thank you.
@jvsnyc
@jvsnyc 2 роки тому
Around ~8:00, in Java, at least, when you made this video, you can indeed have default instance method behavior in an interface, of course, I know this is considering various languages with examples in Java, but that is something that could be mentioned. I don't think you are monitoring this channel very closely, but this series is just racking up more and more views. Very good stuff.
@mbijani
@mbijani 7 років тому
Hi Chrisopher, Awesome explanation. Great job
@nemanjastankovic941
@nemanjastankovic941 4 роки тому
Very very very good explanation. I'm impressed. It is obvious that you're getting better with every video. Video is a little bit long, but you've managed to keep my attention. Great job. Regards from Serbia.
@ridakalim6218
@ridakalim6218 9 місяців тому
just watched this and my mind is blown u explained it so well its so simple
@keaman
@keaman 6 років тому
Great description! Read that book about 10 years ago but never understood the pattern as much as I do now having seen your video.
@ChristopherOkhravi
@ChristopherOkhravi 6 років тому
That's awesome! I'm glad to hear the videos complement the contents of the book. Thank you very much for sharing and for watching :)
@user-qg8mo1tm2o
@user-qg8mo1tm2o 3 роки тому
The best video about decorator pattern I have ever seen!
@neolopus
@neolopus 3 роки тому
Best explanation about Decorator. after 5 videos, it finally makes sense.
@konstantindimitrov2019
@konstantindimitrov2019 5 років тому
Honestly Christopher, you are a wizard... I am literally living in your channel! It is super, super, immensely useful for me and my project. I spotted that you don't have a video on the Builder pattern. Am not sure if I have overlooked that but maybe an idea for a future video. You are awesome at explaining abstract concepts simply! ;) :D :D
@ihos4m
@ihos4m 5 років тому
You're an excellent instructor, I think it would be a great idea to do a series about Object Oriented Programming. Thank you.
@shaanmohammed33
@shaanmohammed33 4 роки тому
Awesome explanation (Special applause for telling how decorative pattern is more useful in cases of behavioural changes rather than value changes which is a better scenario for using iterator patter). If someone has not gone through iterator pattern, just by that line of yours he/she will get to know everything about the iterator pattern. Great Teacher you are. Keep on doing the good job of educating others.
@406owner
@406owner 7 років тому
by far, you are the best. your teaching and explaining methods are simple and easy ( and in the world of programming, that is priceless ) waiting for the next episode.
@ChristopherOkhravi
@ChristopherOkhravi 7 років тому
Osama Tamimi Thanks for taking the time to write this comment. I appreciate it. I'm glad the video is useful :)
@RajVadla
@RajVadla 3 роки тому
You are a savior. Thanks for your time and care about community 💐
@amrhansari
@amrhansari 5 років тому
I love your videos, You are the best teacher. I never get tired.
@sivar4300
@sivar4300 4 роки тому
I like the way you visualise it like a recursion and linked list
@saravanprathi6956
@saravanprathi6956 4 роки тому
Finally I understood Decorator Pattern, thanks a ton Christopher!!
@embalyst
@embalyst 6 років тому
Another great instructional video! I feel like I understand how to make and use the decorator pattern. If I'm still a bit fuzzy on anything, it is why or when to use this pattern. Maybe extra examples might have helped.
@demonspawn5967
@demonspawn5967 4 роки тому
Hi Christopher, thank you very much for this informative video! I was quite frustrated with the material that my teacher handed out, because I didn't understand what exactly the pattern is and how it's used, but now I do :)
@MyChannel-kq4dv
@MyChannel-kq4dv Рік тому
Thank you so much. I really enjoy your explanations.
@44inraman
@44inraman 5 років тому
Really a good explanation for each design pattern. Really good work you made.
@Brunoenribeiro
@Brunoenribeiro 3 роки тому
Love how "coffee" starts to lose its meaning and becomes just a data thing during this video 😂 just kidding. Love your content, the best I found in yt
@cdmapplications
@cdmapplications 7 років тому
Good job, loving these video's, verry well explained!
@psyaviah
@psyaviah 7 років тому
Thanks again! Very well explained via different angles.
@DBakars
@DBakars 7 років тому
Hi Christopher, I by mistake came across your channel and am wonderstruck with your style of telling the things. I already had the book but everything never meant much sense until I started watching your videos.Thanks for making things simple. Eagerly waiting for your next videos. Please keep us posted. :)
@ChristopherOkhravi
@ChristopherOkhravi 7 років тому
Thank you for the kind words :) :)
@kserra9112
@kserra9112 2 роки тому
Still the best video ever about explaining the decorator pattern.
@dzhan84
@dzhan84 5 років тому
Thanks man, your videos are very helpful and easy to understand. You are a talented teacher
@Venezuelangel
@Venezuelangel 4 роки тому
HOOOOlLLLLLYYYY CRAP, I was recommended your videos by the YT Algorithm and I was like, "nah, I'm just a Junior Dev, I ain't gonna need Design Patterns for another year"... WRONG! So glad the algorithm found you again. Subscribed.
@callumkaspick
@callumkaspick 2 роки тому
Outstanding explanation! Thank you!
@ryancederoth727
@ryancederoth727 4 роки тому
@2:38 Wow... I spent, like, 3 days a couple months ago researching Abstract classes and didn't manage to gain, like, a lick of insight. This guy sums it in a TOTALLY understandable way in all of a minute.. and this tutorial isn't even about abstract classes!!
@chrishopkins652
@chrishopkins652 4 роки тому
I absolutely love these explanations. Thanks so much for them. I found it confusing to think of Caramel/Chocolate as types of beverages. It helped me to think of the Abstract Beverage class as a 'Product' instead. Both Espresso and Caramel are Products that the coffee shop sells, but Espresso is the base Product. Caramel is an addon but also still a Product.
@88ylli
@88ylli 2 роки тому
It's funny because before watching your videos I was getting information about patterns on different sources, and it seemed to me that all different sources were saying different things on the same pattern. Then after watching your videos I realized that all these sources were saying the same thing. Definitely the simplest explanation ever. Thank you!
@alanlai8769
@alanlai8769 2 роки тому
A clever way of using recursion and polymorphism, great explaination!
@billcui6317
@billcui6317 3 роки тому
Dude you're amazing. Thanks man really helped me with my CS course
@ythalorossy
@ythalorossy 6 років тому
Christopher, I really appreciate your videos. Thanks a lot for share.
Factory Method Pattern - Design Patterns (ep 4)
27:21
Christopher Okhravi
Переглядів 526 тис.
Observer Pattern - Design Patterns (ep 2)
49:47
Christopher Okhravi
Переглядів 548 тис.
Strategy Pattern - Design Patterns (ep 1)
35:11
Christopher Okhravi
Переглядів 1,4 млн
Use the Decorator Pattern To Reduce Code Duplication in Complex Models
8:58
3 Ideas on Refactoring by Martin Fowler
5:50
Christopher Okhravi
Переглядів 17 тис.
Design Patterns Revisited in Modern Java by Venkat Subramaniam
51:30
The Only Time You Should Use Polymorphism
13:55
Christopher Okhravi
Переглядів 83 тис.
Command Pattern - Design Patterns (ep 7)
39:12
Christopher Okhravi
Переглядів 261 тис.
Dependency Injection, The Best Pattern
13:16
CodeAesthetic
Переглядів 706 тис.
Liskov's Substitution Principle | SOLID Design Principles (ep 1 part 1)
16:08
Christopher Okhravi
Переглядів 156 тис.
Why Use Design Patterns When Python Has Functions?
23:23
ArjanCodes
Переглядів 95 тис.