Adapter Pattern - Design Patterns (ep 8)

Поделиться
HTML-код
  • Опубликовано: 19 сен 2024
  • Video series on Design Patterns for Object Oriented Languages. This time we look at the Adapter Pattern.
    💙 BUY MY BOOK:
    leanpub.com/th...
    ► 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

Комментарии • 384

  • @emangonzalez2309
    @emangonzalez2309 3 года назад +29

    i learn more from ur 30 - 40 mins than my 2 hour lectures

  • @SaurabhGuptaicecool
    @SaurabhGuptaicecool 4 года назад +19

    This series is like godly for interview preps.

  • @MrRemyguy
    @MrRemyguy 4 года назад +6

    This is better than the "Best Selling" Udemy course on Design Patterns. I know cuz I bought it and now regretting.

  • @santoshkumarganji
    @santoshkumarganji 7 лет назад +153

    Hi Christopher, Thanks for making such a wonderful videos on design patterns. I just come across your videos while searching for design patterns in youtube. I have gone through all of your videos on design patterns. I say these are simply excellent. Keep up the pace. Expecting all GOF design patterns through your videos.

    • @ChristopherOkhravi
      @ChristopherOkhravi  7 лет назад +24

      +santosh ganji Solid. I'm glad to hear. About all the GOF patterns, I've been thinking about whether I should indeed cover all of them. I was intending to only do the ones in Head First but since the videos have been quite well received I might make a video for the remaining patterns in the GOF book. Thanks for commenting! And thanks for watching :)

    • @pmz558
      @pmz558 4 года назад +5

      @@ChristopherOkhravi 2020 and I share the same sentiment

    • @theodorebraxton4509
      @theodorebraxton4509 3 года назад

      You probably dont give a shit but does anyone know a trick to get back into an instagram account??
      I was stupid forgot the account password. I would love any tricks you can give me!

    • @jonroland6780
      @jonroland6780 3 года назад

      @Theodore Braxton instablaster :)

    • @theodorebraxton4509
      @theodorebraxton4509 3 года назад

      @Jon Roland I really appreciate your reply. I found the site thru google and Im waiting for the hacking stuff now.
      Takes a while so I will reply here later when my account password hopefully is recovered.

  • @TusharMehmi
    @TusharMehmi 7 лет назад +4

    I think yours are the only videos on RUclips for learning Design patterns thoroughly without even reading anything, really thankful for that and please never stop making videos.

  • @alim80
    @alim80 7 лет назад +71

    Thank you, Christopher, these are honestly the best design pattern videos I have seen and help me to really understand them. I look forward to the next video :)

    • @ChristopherOkhravi
      @ChristopherOkhravi  7 лет назад +4

      +Ali Morrison Thanks! I'm glad to hear the content is valuable. Next coming soon :)

  • @pinkponyofprey1965
    @pinkponyofprey1965 7 лет назад +21

    Oh, man, finally a dyed in the wool bona fide natural born teacher!!! If there were teachers like these around when I was a kid I would have paid attention first time around. But ... they spread the info out over a complete year that it took mr Okhravi less than half an hour to explain. Well, I ain't dead yet so I can learn this now instead! :D

  • @kushiskinng
    @kushiskinng 2 года назад +2

    My god.. that transformer vs the plug difference to explain the difference b/w adapter and decorator is amazing! This would remain with me forever now. Thanks Chris!

  • @sohamsmarty
    @sohamsmarty 3 года назад +2

    My friend, you are one of the most thorough teacher of these topics that I have come across.
    Thank you for this video!

  • @johnyepthomi892
    @johnyepthomi892 3 года назад +6

    You’re passion is infectious. Hope you keep this going .

  • @YazanAlaboudi
    @YazanAlaboudi 4 года назад +3

    Great video again. Whenever I try to explain this to anyone, I typically try to give an example where I'm trying to save some entity to a database. Then I explain the database may change but should not really affect the modelling of our program.

  • @a_green_cat
    @a_green_cat Год назад

    i really like how you always repeat things, i find it really difficult to focus on lectures and spoken word in general but with your videos i never lose track

  • @josecarlosramirez486
    @josecarlosramirez486 6 лет назад +6

    I had an exposition in university about this design pattern yesterday. You taught me how to explain this in a way that people can understand it, and I'm really thankful for that. Happy holidays Christopher :)

    • @ChristopherOkhravi
      @ChristopherOkhravi  6 лет назад +1

      I’m humbled and really glad to hear that. Congrats on the success! And happy holidays to you too :)

  • @liangsitao
    @liangsitao 5 лет назад +2

    Thank you Christopher, for recording the whole discussion, instead of making lectures. The videos and in super headfirst manner and I am able to focus and grasp the concepts and rationale behind these patterns. And most importantly I learnt from you on how to read a technical book and present our own interpretation. 👍

  • @jongrant6385
    @jongrant6385 6 лет назад +30

    Amazing videos mate - loved the transition at 4:14 :P

  • @Themicke90able
    @Themicke90able Год назад +2

    Dina videos är dom absolut bästa jag har sett på länge. Sättet du förklarar på är extremt pedagogiskt! Tack för att du har gjort dom här videorna!

  • @brunon.8962
    @brunon.8962 4 года назад +2

    This should be the first chapter of the book, it explains composition, delegation, asociation in a very simple way.

  • @lakepee
    @lakepee 6 месяцев назад

    This is super incredible to learn design principles. I’m really happy I found this video

  • @ZsoltGaramszegi
    @ZsoltGaramszegi 3 года назад

    Christopher, you always say you don’t know this you don’t know that, yet you explain it very understandably. :) Thank you!

  • @djBC10000
    @djBC10000 4 года назад +3

    I like how you teach man, it is very clear and simple to understand, and I appreciate all of the efforts you are putting.

  • @BrunoPouliotLeCanardNoir
    @BrunoPouliotLeCanardNoir 4 года назад +8

    Just want to say, i love the way teaching us 😉.

  • @kerstiny4698
    @kerstiny4698 3 года назад

    I truly wish that more lecturers can teach from the perspective of students, just like you do! I pay a ton in tuition but sometimes just don't get much digestible knowledge in return. There are professors that don't even bother to tailor the publicly available slides to their actual need, let along writing notes on board. They just read thru or fly thru some slide and give random thoughts. While this might work for advanced class, it's absolutely a nightmare for any introductory course. Sir you deserve a larger platform, and I wish you all the best!

  • @dennisvanotterdijk
    @dennisvanotterdijk 6 месяцев назад

    Love the practical examples that you use to demonstrate the design pattern! Thanks for the effort you're putting into this...

  • @sinikishan1408
    @sinikishan1408 2 года назад

    Hi Christopher, I am a big fan of your RUclips Contents, especially OOps n Design Patterns. Concepts were always vague for me initially Till I come across your videos. However, your videos helped me a lot to convey the right message I had to deliver to my students. Thanks.

  • @gayathrimahalingam95
    @gayathrimahalingam95 4 года назад

    The way you simplify and explain it is extremely commendable. I am preparing for an interview after a break in my career . On searching for relevant videos, yours is the best I would say, Thanks a lot. You bring in so much clarity by explaining it with simplest possible examples . Great teaching.. Thanks a lot. Could not resist appreciating your effort. I am pausing the video in the middle and typing this. Great job sir.

  • @gilbert.gabriel
    @gilbert.gabriel 11 месяцев назад

    Wow. I now understand the Adapter pattern. Very thorough explanation. Glad I found this video!

  • @NarendraKolink
    @NarendraKolink 2 года назад

    Best video to understand the Adapter Pattern... Thank you so much for your superb explanation.

  • @kamalam29
    @kamalam29 2 года назад +1

    Simplest example of this pattern could be "Translator"
    Suppose your are English man want to invite Chinese man for lunch who doesn't understands english or your sign langauges as well. What you will do? you will simply call for a person who knows English and Mandarin and, that Translator person is not Uplifiting or Editing your intentions. Whatever you asked him he just simply delivered it. That way, you successfully invited that man on lunch.
    Let me know if I'm incorrect here.
    Thank you for such great explanations.

  • @hk318i
    @hk318i 7 лет назад +1

    A good example, in scientific computing where parallel computing is required, an adapter could be used to wrap/hide MP or/and MPI. That also simplify the interface of such external libraries.

  • @TheFlyguy31
    @TheFlyguy31 6 лет назад

    Probably the best example of the Adapter Pattern I've seen

  • @muhammedemad1155
    @muhammedemad1155 2 года назад

    best design pattern explanation on youtube, thank you sir

  • @alvarezmartin
    @alvarezmartin Год назад

    Christopher: I've just found you....and I have to say that it is the best explanation that I saw about design patterns. I'll see other videos. Thanks from Argentina! Martin!

  • @Blaskillo
    @Blaskillo 5 месяцев назад

    Hello Chris, again awesome video, I did not know that adapter pattern was also known as a wrapper, but thank you for mentioning that at the beginning of the video, it makes totally sense to be called like that

  • @XadaTen
    @XadaTen 7 лет назад

    My brain exploded as I finally understood the differences. You are the best!

  • @giveexamples
    @giveexamples 6 лет назад

    Before you, learning the design patterns was absolutely tough for me, but after watching your great and subjective videos, everything has changed; TADA. Again the best adapter explanation I have ever seen.Thank you man.

  • @rongliao9255
    @rongliao9255 4 года назад

    Very clear and concise explanation with engaging teaching style!

  • @matimozg
    @matimozg Год назад

    I love that way of studing. It's fun, and you get me knowledge in easier way. Thanks a lot man!

  • @chaoukimansour7816
    @chaoukimansour7816 Год назад

    Best deign pattern videos out there ! Thanks Christopher

  • @diego99799
    @diego99799 7 лет назад +8

    Your videos are one of the few things I cant wait. Thank you!

  • @kasperwesteraa9558
    @kasperwesteraa9558 2 года назад +1

    You are very good at explaining how design patterns work! Love it!

  • @RafaellLycan
    @RafaellLycan 7 лет назад +2

    Chris you saved my life today. I'm working with a legacy application that's expanding to another country and now we need to integrate with different third-party apps.
    Thank you and when you visit Barcelona remember me that I own you a beer.
    Take care

    • @ChristopherOkhravi
      @ChristopherOkhravi  7 лет назад

      +Rafaell Lycan Hah! That's awesome I'm super glad to hear! High five for solving the issues you faced! :) And thanks for the beer :) :) :)

  • @nikhilemmanuelmusic
    @nikhilemmanuelmusic 7 лет назад

    Well for not a good "reader" like me, your videos has been so clear and understanding. thanks a ton bro. keep it going.

  • @AmongManyWays
    @AmongManyWays 4 года назад +1

    Loved the way you teach or make videos. Also love ur cat too !

  • @karapasi6206
    @karapasi6206 Год назад +1

    You are amazing Christopher. So much dedication and passion. You actually created desire to learn and dive into these concepts. Thanks a lot.

  • @VikramKaull
    @VikramKaull 7 лет назад

    Hi Christopher
    Another great video explaining the pattern! Thank you so much for sharing!
    I wanted to point out more about using the Adapter pattern for an external library.
    It's definitely a good idea to encapsulate all your external DAO calls in the adapter pattern, like calling a database or an external service.
    Another reason is Exception handling.
    For whatever reason you have defined your own exception type hierarchy (transient or permanent exceptions) in your code base. And you want to translate the exceptions thrown by your external dependency.
    Adapter pattern is good for that because you can wrap the call to adaptee.speceficRequest() in a try{} catch{} and re-throw exceptions of your own type.
    One useful point of rethrowing exceptions of your own type is to have different retry policies for different kind of exceptions.
    Thanks again for sharing the video!

  • @skyzhangty1
    @skyzhangty1 5 лет назад

    I finally kinda understand this pattern I think... The adapter is actually trying to connect ITarget and Adaptee. I was confused why you needed to create a separate interface for the adapter, but in fact that’s the interface that the client already has. And because of polymorphism, when the client calls ITarget.request(), he’s unaware of if he’s calling the real implementation or the adapter implementation. Your Swedish power plug is actually the ITarget, your adapter is the adapter class implementing ITarget and the UK power plug is the adaptee

  • @antenna7851
    @antenna7851 3 года назад

    I barely comment to youtube videos but i was compelled to write to this one. That was such a nice example and explanation. Your energy definitely made it a lot easier to watch as well. Thanks

  • @tobidaada
    @tobidaada 5 лет назад +5

    This was really well done. I love your style of teaching and enthusiasm.

  • @eonacademy5036
    @eonacademy5036 3 года назад

    I asked in the Decorator video I think, where were you from and you answered this one...besides I have learnt a lot from you about Desing Patterns nowdays, let me tell you that your English is incredible good and clear.. thanks a lot for everything man, saludos desde México =)...

  • @chornge1
    @chornge1 7 лет назад +1

    I have both design books and have been lacking the time to thoroughly go through them, so thank u!!!

    • @ChristopherOkhravi
      @ChristopherOkhravi  7 лет назад

      +Christian M Solid. Makes me glad to hear that the videos work as a complement. Thanks for sharing and for watching :)

  • @balaganesh3440
    @balaganesh3440 3 года назад

    The best video on adapter pattern

  • @vagarwal8686
    @vagarwal8686 4 года назад

    This is even better than pluralsight and i do have its subscription.

  • @javacoco5047
    @javacoco5047 3 года назад +1

    great work!!! you inspire me for my upcoming bachelor thesis - thank you, so helpful!

  • @kewtomrao
    @kewtomrao 2 года назад

    Amazing!!! May god bless you for these tutorials!!!

  • @jmendowski
    @jmendowski 5 лет назад +1

    Thanks a lot for ur effort on these videos. I have watched all patterns videos. Every programmer should watch them.

  • @systemdesignog
    @systemdesignog 3 года назад

    Hi Christopher,
    I was going through head first book, and got confused with examples. But you explained those examples very well.
    Thanks !!

  • @tanushsathiyaseelan9428
    @tanushsathiyaseelan9428 3 года назад

    Man u you are wonderful. Wish every single teacher is like you. Thank for you for these golden content

  • @mireazma
    @mireazma 3 года назад +2

    The key lies in 17:19, otherwise (without DI) the whole thing would be useless because if we hardwire Adaptee into the client, we might as well call SpecificRequest().
    OTOH we could make Adaptee implement from IAdaptee with IAdaptee.SpecificRequest().

  • @harinderchoudhary6259
    @harinderchoudhary6259 Год назад

    one simple practice example for this pattern if you would like to learn by implementation.
    create an adaptor between Legacy Calculator and modern Calculator.
    Legacy calculator function signature would be int calculate(int op,int a, int b) where op is operation code.
    Modern calculator function signature would be int add(int a,int b) , int subtract(int a,int b). As you can see interfaces of Modern Calculator and legacy calculator are incompatible. So you can create an adaptor class to make the interface compatible.

  • @balajim6628
    @balajim6628 5 лет назад

    Thatnks a lot Christopher for making these videos, you are explaining very well, easy to understand, I am not referring any books. your videos are enough.. .:)

  • @גלכהן-ו8ח
    @גלכהן-ו8ח 7 лет назад +5

    Yet another great video
    The series is incredibly clear, Thanks a lot
    Waiting for the next one

    • @ChristopherOkhravi
      @ChristopherOkhravi  7 лет назад +1

      Thanks! And thanks for following the series. Next is on its way :)

  • @sangramkesaridash9225
    @sangramkesaridash9225 3 года назад +4

    Hi Christopher, Thanks for excellent explanation. But I Have doubt here from your code example: in Client Class if you can pass new Adaptee() you can call the specifcRequest() method by reference also, so no need of adapter class . So what I think is the adapter class should have logic to create object of Adaptee class and call its method. Client shouldn't know about Adptee class at all. Client will call Adapter class and that constructor of Adapter will make a object of new Adaptee() and assigned to Adaptee instance and invoke method of Adaptee.

  • @safvanp567
    @safvanp567 10 месяцев назад

    Thank you so much for this playlist, I highly appreciate your hard work in creating lectures

  • @jayakapoor
    @jayakapoor 6 лет назад +1

    Thank you Christopher for making these videos. These are the best videos that I ever came across on design patterns. I have watched all the videos and eagerly waiting for next one...

  • @simondavis1303
    @simondavis1303 3 года назад

    I find this as a good example to refer to for the adapter pattern:
    const { credential, user } = await auth.signInWithPopup(
    new firebase.auth.GoogleAuthProvider()
    );
    We have to adapt these Providers with Firebase in order to use them. So Firebase already created these adapters that we can plug-n-play.

  • @alicialockhart1081
    @alicialockhart1081 3 года назад

    Thank God a video with no weird accents.

  • @George74rus
    @George74rus 3 года назад

    Wow! Clear, creative, understandable english. Subscribed.

  • @gubasso
    @gubasso 6 лет назад

    Hello Christopher!! Just a suggestion! I think that whenever you want to talk about "Interface" in the sense of contracts between two parties (and not in the sense of Java Interfaces, etc.), you could use the term API ! This would be a nice analogy, and lots of programming books/tutorials refers to these contracts (even when interacting a simple function with his caller and/or his "returner") as APIs. Hope to be helpful!! And congratulations for your awesome work!!!!

  • @PuHLiY92
    @PuHLiY92 3 года назад +4

    Спасибо за объяснение. Не зная язык - понял всё, благодаря жестикуляции.)

  • @learn-cool-kids
    @learn-cool-kids 2 года назад

    Thanks Christopher, the pedagogy is super good and it helps a lot after going through the books.

  • @colinhughes2452
    @colinhughes2452 7 лет назад +3

    Another great explanation of a design pattern. Enjoy your youtube videos - these and code-walks.

  • @edekara
    @edekara 7 лет назад

    One interesting example was when we integrated a new payment, and the payment provider was a third party which required a different view of the order information that we stored in our side, so we had to create an adapter which adapted our order into an order object which was constructed in a way more relevant to the Payment provider. BTW the end was quite interesting bit about Favouring composition over inheritance.

  • @amraboughazala5986
    @amraboughazala5986 5 лет назад

    I liked the pause at the end.

  • @fernandogomez83
    @fernandogomez83 2 года назад

    Thank you for the video Christopher.

  • @SosetaFurioasaJr
    @SosetaFurioasaJr 3 года назад

    Man, that head swivel at 26:11 is hilarious :))

  • @andreibatinas3880
    @andreibatinas3880 Год назад

    Man…you did such a great job!
    I just want to see more videos from you!

  • @ArunKumar-xm4ju
    @ArunKumar-xm4ju 3 года назад +3

    Hi Christopher. Thanks a lot for your videos. It really helps me to get better understanding of design patterns than reading in books. And your presentation skill is awesome. I have one doubt here. You had mentioned if we speak on transforming the logic , then it is not adapter pattern. Can you kindly let me know which pattern will suit this kind of transforming logic?

  • @user-tw6lq5xd8r
    @user-tw6lq5xd8r Год назад

    Thanks for that smile at the end of the video! Super cute :3

  • @botrate412
    @botrate412 2 года назад

    very good explanation thank you Christopher.

  • @anshulabhinav13
    @anshulabhinav13 7 лет назад

    The adapter in the laptop charger is also actually an 'adapter', in the context here. It is an adapter between the cable charger and your laptop. Just like the socket adapter is an 'adapter' between your cable charger and the wall plug.

  • @StevePlaysBanjo
    @StevePlaysBanjo 5 лет назад +1

    Excellent tutorial! I have these books, but they’re rather dry. You make them interesting. 🤘

  • @taras_anichyn
    @taras_anichyn Год назад

    Thanks for that video. Very clear explanation.

  • @mohammedabujayyab6146
    @mohammedabujayyab6146 3 года назад

    very simple and easy explanation and help well to understand design pattern!

  • @kaustuvchatterjee4117
    @kaustuvchatterjee4117 2 года назад

    One good example of adapter pattern is changing payment gateway for your payment module. Suppose earlier payment gateway exposed an API to get username & password as separate parameter. but new payment gateway exposes an API which takes username & password as delimited string(Ex: username:password)..

  • @ahmetkemalakargul1060
    @ahmetkemalakargul1060 5 лет назад +1

    Passing between scenes is awesome 7:50 :D

  • @oliviermarty4514
    @oliviermarty4514 7 лет назад

    Great video, i'm watching all of them and always looking forward for the next one. I manipulated in the past, when working on android projects, a thing they called a List Adapter that would interface together a collection of POD/primitive data objects and a collection of graphical/UI objects. At the time i wasn't really digging into those design patterns thing but now thanks to you I have a better understanding of what this adapter did.

  • @fahimmahmud8036
    @fahimmahmud8036 5 лет назад

    I normally don't comment. But I wanted to say thank you for the explanation! Really a good way to understand!

  • @pradeepsanju
    @pradeepsanju 7 лет назад +3

    Thanks Christopher. It is really helpful.

  • @shaktisingh-lu3dm
    @shaktisingh-lu3dm 3 года назад

    Great Video. Very understandable. Many thanks for such videos.

  • @mirzaaqeel
    @mirzaaqeel 3 года назад

    First of all thanks for putting great material on you tube for Design Patterns. Believe me you have a great way of delivering concepts, for me you seems to be a born teacher. Can you share some sample codes for each design pattern shared on say Git hub that people can use as a reference to implement different design patterns.

  • @isserzack4641
    @isserzack4641 4 года назад

    Thank you for the great tutorials. You put so much effort on this and I should say that you made it crystal clear. Please continue this series and keep sharing with us your knowledge.

  • @nikitavorotnyak9661
    @nikitavorotnyak9661 6 лет назад +1

    Excellent editing, making your videos very fluid and easy to digest! Great videos!

  • @mugatu2017
    @mugatu2017 3 года назад

    Love your videos mate!!!, but remember when we implement an interface (realization) we should use discontinuous lines

  • @prashantsrivastava9641
    @prashantsrivastava9641 3 года назад

    Hi, really liked your style of presenting👍👍, just need a suggestion am c/c++ professional but almost beginer and new to design patterns(except factory) kindly suggest a book which is c++ based for understanding of design patterns.... Thanks in advance 😊

  • @iham1313
    @iham1313 5 лет назад

    again an awesome vid, christopher!
    you asked for input:
    i am very happy about the theoretical concept you draw and "implemented" and i would have been very happy about a second sample which is about the plugs/sockets you started with.
    client is the class "plug" (of your macbook)
    adaptee is class "wallsocket"
    "plugadapter" is the piece of hardware you showed us
    and i guess the interface might be "iplugadapter" to deliver the contract.
    what i generally might have missed is where the client is used. sort of "plugged in" or such.
    to be more technical: where and how does the client (plug) make use of the adapter (plugadapter)?
    i only see the adapter (plugadapter) use the adaptee (wallsocket)

  • @shivamsaxena7378
    @shivamsaxena7378 6 лет назад

    The best explanation of design patterns I have come across on the internet. Great work man, you got a new subscriber! :)

  • @jackylau2597
    @jackylau2597 6 лет назад

    best design pattern tutorial on youtube. thanks!

  • @AZ-mi2wj
    @AZ-mi2wj Год назад

    Very nice video! Well explained!

  • @FebiMettasari
    @FebiMettasari 5 лет назад

    I really enjoy your explanations on design patterns, it helps me a lot in my OOAD class 💙

  • @dscheme4427
    @dscheme4427 5 лет назад

    Cool stuff bro, keep doing 'em. What I would like to see is the adapter pattern explained in terms of how to, for example, draw different tree-views based on a composite pattern. Maybe you'll get there later, just started watching.