Design Patterns - Factory Method Pattern Explanation and Implementation in C++

Поділитися
Вставка
  • Опубліковано 8 лип 2024
  • ►Software Design and Design Patterns Playlist: • C++ Software Design an...
    ►Find full courses on: courses.mshah.io/
    ►Join as Member to Support the channel: / @mikeshah
    ►Git Repo: github.com/MikeShah/DesignPat...
    ►Lesson Description: In this lesson I teach you about a creational design pattern to have a single point in which you allocate objects at run-time. This is the factory method (or factory function), which takes advantage of inheritance based polymorphism to create the correct object at run-time and return it to the user.
    00:00 Factory method and definition
    1:25 Goal of the factory method pattern
    2:37 Inheritance based polymorphism
    3:40 Start of implementation with interface
    4:50 Creating derived classes
    5:58 Creation of our factory
    9:15 Confirming the factory works in GDB
    10:50 Refactoring our factory arguments with enum class
    14:35 Returning a smart pointer from our factory
    16:12 Confirming no memory leaks with valgrind
    17:30 Recap of source code and pattern
    18:00 Pros and cons of the pattern
    ►UA-cam Channel: / mikeshah
    ►Please like and subscribe to help the channel!
    ►Join our free community: courses.mshah.io/communities/...
  • Наука та технологія

КОМЕНТАРІ • 31

  • @anhurtjv
    @anhurtjv 2 роки тому +6

    Your video is probably one of the best I have found in how to use design patterns in C++. It is really clear, and the fact that you show in real time what you are doing really helps follow the content.

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

      Thank you for the kind words!

  • @stevea.b.9282
    @stevea.b.9282 4 місяці тому +3

    Thank you for explaining these patterns so clearly and for keeping it simple. Other sources I tried made them seem very complicated and I almost gave up.. thankfully I came across your channel! I can't thank you enough.

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

      Cheers! More coming to this series tomorrow 🙂

  • @k0185123
    @k0185123 4 місяці тому +3

    amazing. I'm so lucky to have the chance to watch your videos!!!!!

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

      Thank you for the kind words!

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

    Man i just got the understanding of Factory Design pattern after watching it so easily
    Thanks a lot 🙏

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

      Cheers, glad to hear it!

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

    Absolutely loved your teaching style! 🙌 Thanks for the cool tip: --tui

  • @user-ql7pw7ld1n
    @user-ql7pw7ld1n 2 місяці тому +1

    Understood fully..loved this :)

  • @sallaklamhayyen9876
    @sallaklamhayyen9876 15 днів тому +1

    amazing as always = thank you so much Dr. Mike

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

    info vtbl was really cool. thank you.

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

      You are most welcome!

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

    _thank you thank you thank you_ for the clear explanation

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

    thanks a lot for this explanation

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

      Cheers, you are most welcome

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

    Great video!

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

    Quality content

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

      Cheers, thank you for the kind words!

  • @user-cm2ko8ok9r
    @user-cm2ko8ok9r 10 місяців тому +1

    Thanks for the clear explanation and great content. According to refactoring guru, the design pattern "factory method" would have a creator, concrete creators, product, and concrete products. In the example you provided, MakeGameObjectFactory seems to be an object creation function that abstracts away the object creation process and provides an easier way to create objects. I'm wondering if this is a simplified variation of the factory method, or if this still aligns well with the standard factory method? Thanks.

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

      Cheers -- yes this is an example of a factory method.

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

    Curious, Is there any reason to use shared_ptr? in general, by default people use unique_ptr.

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

      Correct, unique_ptr should be the default that folks reach for. shared_ptr is appropriate if your object is referenced multiple times -- which is what I was thinking about in a gaming context :)

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

    Does this pattern have to use heap allocation to work

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

      You could make stack allocations or otherwise use a custom allocator to decide where to allocate your new objects. I suppose this depends on the requirements of your design and how much stack space you have. Heap memory (at least on desktops) we have much more memory :)

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

    Can we keep factory method as static class method and keep class constructor private? so only from factory method we can create instance of class.

    • @MikeShah
      @MikeShah  9 місяців тому

      You can create a factory as a singleton if that is what you're asking -- sure!