2. Strategy Design Pattern explanation | LLD System Design #1 | Design pattern explanation in Java

Поділитися
Вставка
  • Опубліковано 18 лис 2024

КОМЕНТАРІ • 299

  • @tastaslim
    @tastaslim Рік тому +82

    Thank you for this tutorial. Just to add, The fundamental of every design pattern is to separate out what changes over period of time from what remains constant. As you see in Strategy pattern, we are trying to separate out dependency of drive from the main class as much as possible by making various strategies to inject it dynamically based on client requirement so that in future if new requirement for drive comes, there will be minimal/no changes in existing code(Open closed Principle).

    • @niwanshumaheshwari4534
      @niwanshumaheshwari4534 Рік тому +2

      Favour composition over inheritance.
      Separate what stays the same from what changes.
      As we are using a new operator, it's a program to an implementation not to an interface.
      We can use the factory pattern here.
      Right?

    • @farukhmahammad9374
      @farukhmahammad9374 Рік тому

      @@niwanshumaheshwari4534 using new operator doesn't mean we are programming to an implementation ; it's about how you're using it in relation to abstraction and interfaces. correct me if I'm wrong.

    • @tastaslim
      @tastaslim Рік тому

      @@niwanshumaheshwari4534 Also you client should be the one who should initialize the class. You can inject your classes using types in static type languages and using type hints in python

  • @garvitsingh2593
    @garvitsingh2593 6 місяців тому +8

    this guy deserves a lot of respect please continue it ...a legend

  • @swarajshelavale4830
    @swarajshelavale4830 4 місяці тому +6

    Best Explanation ever... You simplified 1 design pattern in just 15mins..Worth it Content!!

  • @KhushalSonawat
    @KhushalSonawat 2 місяці тому +2

    I don't know if anyone else is able to appreciate it, but man the idea of interface and this design pattern is absolute genius. Another day when I'm surprised what all things humans have achieved

  • @kalpeshsaubhri
    @kalpeshsaubhri Рік тому +5

    Bhai the best thing I like about your video is breadth you cover and the language hindi. Please keep these 2 things intact

  • @ugempireninjaaaaaahatori6755
    @ugempireninjaaaaaahatori6755 5 місяців тому +5

    litreally , amazing content , from monday there will be my interviews , if i will get selected than i will defenatly return to this video and comment over this .......amazing one

  • @adityarout1276
    @adityarout1276 2 роки тому +45

    If you are looking for C++ code :
    using namespace std;
    #include
    #include
    using namespace std;
    class drivestratergy{
    public:
    virtual void drive()=0;

    };
    class normalDrive : public drivestratergy{

    public:
    void drive(){
    cout

  • @сойка-и8й
    @сойка-и8й Рік тому +14

    In laymen terms, In Startegy Design pattern we create an interface and it's different implementation based on strategy !! And inject appropriate startegy in client class by creating constructor or any injection of your choice

  • @travelnlearn
    @travelnlearn Місяць тому +3

    Thank You for detailed explanation in a simple effective and efficient way,

  • @deepanshukumar3943
    @deepanshukumar3943 Рік тому +5

    That's what we call the way to teach the Patterns. Awesome way to teach with Amazing content. Hats off..

  • @incredibleone3914
    @incredibleone3914 23 дні тому +1

    Thank you for making us understand concepts in the best way!

  • @connectarunkumar
    @connectarunkumar 5 місяців тому +1

    You are correct. My interview got scheduled for 3 hrs(F2F) but got finished in 15mins. I felt very bad at that moment. Many times I tried but was not able to catch concepts of design patterns. I always use to think in C with classes. Your Design pattern tutorial is helping me a lot to understand. Converting your code from java to C++ to and understanding the concepts of design patterns. Started learning now. Thanks for explanations.

  • @noobCoder26
    @noobCoder26 2 роки тому +59

    I got rejected in an interview because of the lack of knowledge of design pattern. Going to learn from you next time will make a stronger comeback . 💥💥

  • @siddharthtripathy3964
    @siddharthtripathy3964 5 місяців тому +2

    Kya gazab channel hai ye. love his explanation.

  • @mannusharma4620
    @mannusharma4620 5 місяців тому +2

    Just day 2 in your playlist and seriously brother hats off!!! Great work....

  • @shubhamrajput37
    @shubhamrajput37 11 місяців тому +1

    It took me more than an hour to understand this while going through the Head First Book for the same design principle. Should have gone through the video first. Now I am going to use this "strategy", in which I will refer to your video first and then will go through the book

  • @pranaypaul6361
    @pranaypaul6361 3 місяці тому +1

    Very good concept focussed way to explain such stuff.

  • @MrBaaz-do9ny
    @MrBaaz-do9ny 2 роки тому +2

    aap bhagwan ho... I have seen almost 5 videos on strategy pattern but this is best till now..

  • @unemployedcse3514
    @unemployedcse3514 3 місяці тому +1

    I always vome back to this channel for design patterns and system design ❤

  • @AKASHSONI21
    @AKASHSONI21 Рік тому +2

    Thanks for this. Your way of explaining the concepts is very well and helpful.

  • @umangmalhotra1222
    @umangmalhotra1222 Рік тому +1

    I have finally started going through your , LLD Playlist, and I will comment something on every video after watching. Not always need to be Praise or Learnings from the video.

  • @anuragparla4201
    @anuragparla4201 Рік тому +5

    I wish I had this available during my last semester. Design patterns would have been a breeze. Looking forward for more content :)

    • @ConceptandCoding
      @ConceptandCoding  Рік тому +1

      Thank you. Pls also share it with your connections :)

  • @kartikeyrana3736
    @kartikeyrana3736 Рік тому +1

    Gold mine! Gold mine! Gold Mine!
    this playlist is a GOLD MINE !!!

  • @AKASHSONI21
    @AKASHSONI21 Рік тому +1

    Thanks for this. Your way of explaining the concepts is very explanatory

  • @jinendrajain7672
    @jinendrajain7672 Рік тому +2

    Awesome Content, I am sure it gonna teach Young Devs alot.

  • @abhishekpattnaik8531
    @abhishekpattnaik8531 Рік тому +1

    Great explanation with simple example. Thanks Shrayansh.

  • @mukulkopulwar
    @mukulkopulwar 2 роки тому +2

    Great Explanation... Thanks for Sharing 🙂

  • @sameerchoudhary8590
    @sameerchoudhary8590 9 місяців тому +1

    What a splendid explanation. Thank you

  • @arifurlimon4060
    @arifurlimon4060 2 роки тому +1

    Very clear and detailed explanation. Please make more videos in LLD

  • @paritoshdadhich2954
    @paritoshdadhich2954 Рік тому +1

    Thank you for the view. Got to know about the when to use and how to use

  • @royalfitness6860
    @royalfitness6860 7 місяців тому +1

    Great explanation but I would suggest to keep interface name start with I so it will be clear to understand more 😊

  • @prajwalmahaveera9346
    @prajwalmahaveera9346 10 місяців тому +1

    This explanation was clear and damn helpful. Thanks!

  • @grrlgd3835
    @grrlgd3835 5 місяців тому +2

    it's really frustrating because I just know this would be good but only speak English. tried captions and translate but too confusing. and chance to redub some of these ? great tutorials

  • @Kkkk123Naidu-if2gq
    @Kkkk123Naidu-if2gq 2 місяці тому

    Hey bro , you have an awesome knowledge and course agenda , it would have been better if you've xplained it in English instead in hindi. It's very hard to understand and concentrate🙂🥲. Appreciate your efforts

  • @arungoyal3795
    @arungoyal3795 2 роки тому +1

    This is my first comment on youtube , the way explain is amazing....

  • @iamkdblue
    @iamkdblue Рік тому +1

    Jabr jst explanation bro 🎉 - aag laga diya

  • @abhaytiwari1615
    @abhaytiwari1615 2 роки тому +1

    Awesome video. Thanks for uploading.

  • @Sandywf
    @Sandywf 10 місяців тому

    nice explanation ... please make a video on UML ,class and sequence diagram

  • @ankushladani496
    @ankushladani496 Рік тому +1

    Thank you Bhaiya for this awesome explaination....

  • @AshishGusain17
    @AshishGusain17 10 місяців тому +1

    Thanks for the video..nice explaination

  • @RaviBiradar080
    @RaviBiradar080 2 роки тому +1

    Very well explained with understandable examples👍

  • @harshwardhanchougule3039
    @harshwardhanchougule3039 3 місяці тому

    Thank you very much for the detailed explanation !!

  • @_kidrah
    @_kidrah 4 місяці тому

    Great explanation, one doubt - According to SOLID principles Vehicle should be an interface right?

  • @shubhamagarwal1434
    @shubhamagarwal1434 5 місяців тому +1

    Very well explained...awsome!!!

  • @harshinredzone
    @harshinredzone Рік тому

    Thanks for sharing knowledge, Shrayansh.

  • @neelanshgulati2643
    @neelanshgulati2643 2 роки тому +1

    Great content... Keep making more videos.

  • @CodeMode9313
    @CodeMode9313 3 місяці тому +1

    jeher video paaji

  • @rahulgunkar6308
    @rahulgunkar6308 2 роки тому +3

    How come this channel has less subscriber?... You deserve more subs bro.. Nicely explained.

  • @ambersinghrok
    @ambersinghrok 2 роки тому +1

    bhai bs continue rakhna har cheez...bhut bhu help hojaegi

  • @X_y_zaid
    @X_y_zaid 6 місяців тому +1

    Such good explanation bro 🙌🏻

  • @nikkm2000
    @nikkm2000 11 місяців тому

    wonderful explanation dear. Just one suggestion(pls correct me if I am wrong), I think we have to give different name like myDrive() instead of drive() in Vehicle class. It will implicitly differentiate method used inside DriverStartegy.

  • @shaikhabubakar64
    @shaikhabubakar64 19 днів тому +1

    Nice 👍

  • @rajdave7357
    @rajdave7357 Рік тому +1

    ❤❤❤❤❤ maza aagaya guru ji

  • @neha6000
    @neha6000 2 роки тому +1

    Very nice explanation thanks

  • @nishanthmekala1409
    @nishanthmekala1409 Рік тому +3

    Hi Shreyansh,
    Your videos are awesome. But I would like to know the below things
    1. which one we should start first hld or lld?
    2. In what way we should learn hld and lld?
    3. How to practice these and gain hands on experiene?
    4. Is it necessary to take a course after watching your videos?
    5. Any order, you would reccomment to follow?
    Please clear my doubts Shreyansh.

    • @chiragrajani12
      @chiragrajani12 Рік тому +1

      Do let me know as well, I have the same doubt :/

    • @FusionArcs
      @FusionArcs Рік тому +2

      You should always go ahead with the LLD first, even some companies don't have this round explicitly but then it assumed you should know these principles already.
      Then you go HLD.
      For both of them see videos on a lot of problem use cases.
      You will be able to grasp these concepts well

  • @nabajyotimajumdar4511
    @nabajyotimajumdar4511 8 місяців тому +1

    Splendid video!

  • @lal_1404
    @lal_1404 3 місяці тому

    Good explanation, thanks. Just one question, are you using ipad or apple laptop.?

  • @rohitvathumilli8176
    @rohitvathumilli8176 5 місяців тому

    1) Using a Drive Interface with Concrete Implementations
    2) Using a Single Drive Class with Behavior Specified in the Constructor
    Which is better approach

  • @kashiffiroze5066
    @kashiffiroze5066 6 місяців тому +2

    Same can be achieved using @Qualifier annotation of springboot?

  • @auroshisray9140
    @auroshisray9140 Рік тому +1

    Thank you for this tutorial.

  • @paragroy5359
    @paragroy5359 Рік тому +1

    Great video

  • @namanjain2488
    @namanjain2488 Рік тому +2

    Note for my future reference
    5:51 -> at the same level children are using same code , code is not reusable
    solution -> make the common part as interface type

    • @ArunKumar-eo2uj
      @ArunKumar-eo2uj 2 місяці тому

      but how exactly making common part as interface type is solving the problem

  • @5590priyank
    @5590priyank 2 місяці тому

    If we prepare new objects in constructor, wouldn't it violate D of SOLID principle?

  • @hossainurrahaman
    @hossainurrahaman 2 роки тому +5

    I have a few queries, maybe it will sound childish but I will ask anyway.
    We know there are 3 types of design patterns. Creational, structural and behavioral.
    i) Do we need to use all of these three patterns to make a full end to end application?
    i) If not then Can a single type of pattern handle all of the basic scenarios (creation, responsibility assignment to object etc.
    iii) is there any pattern which helps more during the interview.

    • @ConceptandCoding
      @ConceptandCoding  2 роки тому +3

      Hi Rahman, very good question.
      Let me try to elaborate:
      - Do we need to use all 3 types of patterns to make an end to end application. Answer is NO.
      Using Design pattern is not mandatory. You can build system without using any pattern and live with it if system is Readable, Scalable, Manageable etc. You dont need design pattern.
      Let say for solving one part of the system you need to use some pattern, you can use a pattern from any type not necessary to use pattern from all 3 types.
      - Single pattern for helping in Interview, thats a tough question, i would say that depend on what question you get in the interview, basics questions can be created through common design patterns like Factory,Structural.
      But for some specific questions like design logging system, design Notify system we need to know those patterns in advance or come up some clean design during interview itself.

    • @hossainurrahaman
      @hossainurrahaman 2 роки тому

      @@ConceptandCoding thank you for clearing the doubts. So basically during the interview for any particular scenario, I need to start with a design pattern which will suit most with the basic requirements. And need to add any additional design pattern for any new type of requirements.
      Eg:
      If asked to create a parking lot system, and if the basic requirements are
      can have multiple types of cars
      Can have multiple floor
      Can have multiple entry exit
      I can start with something like an abstract factory or factory pattern.
      If by any chance we need to log these events, we can use singleton pattern.
      Correct me if I am wrong.
      Thank you once again for prompt reply.

  • @ijazhaider6072
    @ijazhaider6072 6 місяців тому

    Brother, Normal Drive Strategy class would implement Drive Strategy that means it has-a relationship but in diagram it is-a relationship. Implements are always has-a and extends are is-a. Am i right or missing something?

  • @DemystifyFrontend
    @DemystifyFrontend Рік тому +1

    Great explanation

  • @Mohd_Rashid_Siddiqui
    @Mohd_Rashid_Siddiqui Рік тому +1

    well explained.

  • @homestaysandcafes
    @homestaysandcafes 2 роки тому +2

    Sir From my knowledge we cant create objects of interface. But what I am able to analyse from above example is that we can create a has-a relationship using object of interface but we have to define the functions of interface in the class where object is declare?......Do let me know whether I am correct or not?
    BTW you are creating some GOD level content❤
    Please don't stop, I am ready to help you in every possible way.

    • @ConceptandCoding
      @ConceptandCoding  2 роки тому +1

      let me check the video Hardik and then i will be able to clarify your doubts.
      But one thing i can tell is this is design pattern video, so pattern defined in this, and class and their relationship will be correct as its well documented.

    • @SageXperts
      @SageXperts 2 роки тому

      We are not instantiating the object , but just declaring a variable of that type. And then assigning the value.

  • @geekydanish5990
    @geekydanish5990 2 роки тому +3

    I am aware of the basics of design pattern and some common principle such (as SOLID, KISS, DRY, etc) as they come into use in writing better code in general but I want to know from an interview perspective how deep one need to go say in my case I have an experience of 1.2 years and going for an interview how low do I need to go and design when it comes to LLD, I was always skeptical about LLD to what extend can we go low, in short, does experience affects the quality of solution or is it just like DSA questions same for everyone.
    P.S I haven't experienced any such LLD questions so far so if you can clear things here would be really helpful
    And sorry long explanation 😅

    • @ConceptandCoding
      @ConceptandCoding  2 роки тому +11

      Hi Danish, i can definitely tell you are good in coding and DSA.
      And regarding LLD, there is no Level (which you can go deep). Level might be there in HLD where you can go deeper n deeper on one part of the design, like DB design, next level is RDBMS or No SQL then next level is Master slave then next level is Partitioning then sharding etc.
      But for LLD,
      its all about how good is your understanding with Objects, from the given problem are you able to identify Actors (objects), then what all features(member variables) it should have and then function. And how these different object interact with each others / what would be their relationship. Thats what Design pattern will help and to identify when and where which design pattern need to apply, that comes with experience or practice.
      Sorry for the long answer 🙂

    • @geekydanish5990
      @geekydanish5990 2 роки тому +2

      ​@@ConceptandCoding Hey Thanks for those kind words, I hear you and it totally make sense specially "identify Actors" and finally relationship , will take those input and start learning/practicing accordingly 🙏

  • @mayursoni346
    @mayursoni346 Рік тому

    Good content - really appreciate your efforts in explaining the concepts. Best wishes,.

  • @aksharbrahm4618
    @aksharbrahm4618 5 місяців тому

    One concern, Please take a look the arrows in UML diagram while showing parent child relationship arrows are pointing to parent instead of child. I have verified that those should point to child could you please comment on that.
    Because earlier it was confusing for me..

  • @eswarsai9333
    @eswarsai9333 2 місяці тому

    Can you please make your videos in English on design patterns...

    • @ConceptandCoding
      @ConceptandCoding  2 місяці тому

      i have remake all patterns in english too, pls check “All creational design patterns”, “All structural design patterns” and “All behavioral design patterns” in 1 video in the LLd playlist itself

  • @sreshthisingh8949
    @sreshthisingh8949 Місяць тому +1

    Best video

  • @padmajamahapatra5546
    @padmajamahapatra5546 2 роки тому

    Very well explained .
    Also can you please add other design patterns to this list ..

    • @ConceptandCoding
      @ConceptandCoding  2 роки тому

      Hi, pld do check my LLD playlist, i have added many patterns and will add more soon

  • @theritesh973
    @theritesh973 2 роки тому +1

    Awesome explanation😍

  • @DataMetricsSolutions
    @DataMetricsSolutions 2 роки тому

    Loved the way explained. Immediately subscribed your channel

  • @kochu7484
    @kochu7484 Рік тому +1

    Hi, @conceptandcoding where is the git repo link for the same?

  • @namansaraswat9691
    @namansaraswat9691 2 роки тому

    Good video for strategy design pattern, can you please make a video where you solve a complete lld problem and show usage of strategy design pattern in the solution. If there is any solution you created in lld design that has usage of strategy design please let me know.

    • @ConceptandCoding
      @ConceptandCoding  2 роки тому

      Hi Naman, check Design Parking Lot LLD video, i have used strategy pattern there

    • @namansaraswat9691
      @namansaraswat9691 2 роки тому

      @@ConceptandCoding thanks for reply I am just going through that video only😄😀

  • @sanketneema286
    @sanketneema286 Рік тому

    Thank you so much shrayansh.

  • @naveentmyug
    @naveentmyug 11 місяців тому +1

    very thanks sir

  • @AkshaySharma-bg3oj
    @AkshaySharma-bg3oj Рік тому

    isnt arrow you mentioned in starting for has a belongs to single direction association in uml diagrams. Am I missing something. Great content tho, learned a lot. Thanks

    • @ConceptandCoding
      @ConceptandCoding  Рік тому

      Hi Akshay, to make the UML and LLD easy to understand, i used these arrows for explaining is-a and has-a relationship.
      And in interview, at-least i haven't faced any issue bcoz of this arrows.
      But once you get the understanding better of classes, objects and relationship, then you can learn all UML arrows (which i found very hard to remember)

  • @anketpatel2312
    @anketpatel2312 Рік тому

    Easily understandable.

  • @kashishkukreja7582
    @kashishkukreja7582 Рік тому +3

    Why don't we create Vehicle as an interface and then create 2 more interfaces SprecialCapabilitiesVehicle and NormalCapabilitiesVehicle which extends Vehicle and has default implementation for drive respectively? Now the PassengerCar implements NormalCapabilitiesVehicle and SportsCar and PassengerCar implements SpecialCapabilitiesVehicle.

    • @amlanroutray288
      @amlanroutray288 Рік тому

      this is because, lets assume, later on another functionality like display() will be added and it would be same for sport cars and passenger car and not in off road car, then we can create similar strategy for display and inject them in vehicle constructor. Adding more interfaces will not be a good scalable option with increase in features.

    • @tanujarora4906
      @tanujarora4906 Рік тому +1

      As you update and add new features, how many interfaces you will add and how many interfaces you will refactor? That is the reason we should not opt for this.

  • @HomeTV-h2c
    @HomeTV-h2c Рік тому

    Nice explanation

  • @shubhamnigam14
    @shubhamnigam14 Рік тому

    very good explanation ❤

  • @ArunKumar-eo2uj
    @ArunKumar-eo2uj 2 місяці тому

    Hi..what exactly is the problem if child classes have different implementation of drive() method of the parent class.

  • @FunnyGamerNo1
    @FunnyGamerNo1 Рік тому +1

    useful

  • @vineet4991
    @vineet4991 5 місяців тому

    This is basically Dependency Inversion Principle of SOLID?

  • @shreyashachoudhary480
    @shreyashachoudhary480 Рік тому +1

    Super Clear!

  • @vamsi4998
    @vamsi4998 2 роки тому

    Great explanation. Can you provide the git hub repo link for our reference

    • @ConceptandCoding
      @ConceptandCoding  2 роки тому

      I have shared the gitlab link in my Channel home page only Vamsi.

  • @dhruvsinghal6451
    @dhruvsinghal6451 4 місяці тому

    is a parent class object always capable to be assigned to a child class object, like here drivestrategy is taking on both child objects

  • @ashishmiglani02
    @ashishmiglani02 Рік тому

    Why can we not assign NormalDriveStrategy in the Vehicle class, any how if super constructor is called from child class it will be over writing with the drive strategy provided by the child class. This will be useful to have default drive strategy defined.
    Suggest issue with this approach ?

  • @ankitkumar-qn3zy
    @ankitkumar-qn3zy 8 місяців тому

    Is it not similar to dependency injection? Here we are replacing a method with the interface.

  • @karankaira
    @karankaira Рік тому +1

    if base class has many functions then it is violatiing S of SOLID principles ? am i correct

    • @ConceptandCoding
      @ConceptandCoding  Рік тому

      No, for everyone function we can not create a new class.
      Else we will create another problem called class explosion.
      We can keep related functions in one class.

  • @faheemuddinnaseem6942
    @faheemuddinnaseem6942 Місяць тому +1

    Can someOne tell me the arrow Notation between DriveStrategy interface and normal drive , special drive is correct ?
    As DriveStrategy is interface and normal drive is class so the relationship between them should be has a relationship and arrow should be like -------> .
    See at 7:25.

  • @anshulgoel1940
    @anshulgoel1940 11 місяців тому

    When the child classes directly create the specific instances of Drive Strategy, aren't they violating the Dependency principle. ?

  • @ShivamSingh-mt4nr
    @ShivamSingh-mt4nr 5 місяців тому +1

    Thnanks bhaiya

  • @shrutiiyyer2783
    @shrutiiyyer2783 11 місяців тому

    any questions available on this strategy to practice?

  • @devishiaggarwal5668
    @devishiaggarwal5668 3 місяці тому

    on which platform are you coding

  • @udaykumar-ib9eg
    @udaykumar-ib9eg 6 місяців тому

    Explain in english. It's good for everyone