Learn to use the Factory-Method pattern and respect the Open-Closed principle 💻Build a POS

แชร์
ฝัง
  • เผยแพร่เมื่อ 3 ก.ค. 2024
  • In this video you will learn everything you need to know about the Factory-Method design pattern in programming and how to apply it in your developments. This pattern is used to create objects without specifying the exact class of object to be created, which allows objects of different classes to be created without first knowing them.
    In this video, we will explain in detail what the Factory-Method pattern is, when and how it is used, its advantages and disadvantages, and how it allows respecting SOLID principles such as the Open-Closed Principle and the Single Responsibility Principle.
    In addition, we will build several practical examples so that you can see how the Factory-Method pattern is applied in practice. Among these examples, we highlight the construction of objects of the Burger, Kebab and Pizza classes in a point of sale (POS) system.
    At the POS, we will use the Factory-Method pattern to create food objects based on the customer's order, without needing to know the exact class of object that will be created. This will allow us to keep our code flexible and scalable, as we will be able to add new types of food to the system without having to modify our original code.
    In summary, in this video you will learn:
    What is the Factory-Method design pattern and when is it used?
    How to use the Factory-Method pattern in your developments.
    The advantages and disadvantages of the Factory-Method pattern.
    How the Factory-Method pattern allows respecting the principles of SOLID.
    Practical examples of application of the Factory-Method pattern, including the example of the POS with objects of the Burger, Kebab and Pizza classes.
    This video is ideal for programmers and developers who want to improve their software design skills and learn how to use design patterns to create more flexible, scalable, and maintainable solutions. Do not miss it!

ความคิดเห็น • 15

  • @DotTechES
    @DotTechES  ปีที่แล้ว +2

    🌟 ¡Nos encantaría saber tu opinión! 🌟
    Tus ideas son valiosas: ¿Qué temas o contenidos te gustaría que exploráramos? ¡Comparte tus sugerencias!
    Tu voz cuenta: ¿Qué te ha parecido este vídeo? Déjanos tu opinión y conversemos.
    🚀 Sigue aprendiendo con nosotros: 🚀
    Explora nuestras series especializadas para profundizar en tus temas favoritos:
    🖥 JavaScript Bites: Descubre trucos y consejos prácticos th-cam.com/video/eemazs4qfac/w-d-xo.html
    🔍 Angular Bites: Aprende Angular desde cero hasta avanzado th-cam.com/video/ibTe8VR7hMk/w-d-xo.html
    💡 Ingeniería del Software: Mejora tus habilidades en ingeniería de software th-cam.com/video/d1EVlXoWKbw/w-d-xo.html
    🧩 Patrones de Diseño: Domina los patrones de diseño con ejemplos prácticos th-cam.com/video/eemazs4qfac/w-d-xo.html
    🔔 Suscríbete y activa la campanita para no perderte ningún contenido nuevo. ¡Tu apoyo es esencial para nosotros!

  • @lucaschambe
    @lucaschambe ปีที่แล้ว +6

    Gracias por el vídeo Carlos!

    • @DotTechES
      @DotTechES  ปีที่แล้ว +3

      Gracias a ti por comentar! Nos seguimos viendo en más vídeos, esperando que sean útiles a la comunidad 💪💪

  • @FranciscoGonzalez-fv6hp
    @FranciscoGonzalez-fv6hp ปีที่แล้ว +2

    Gran video y gran aporte 💪 esperando ya el siguiente vídeo!

    • @DotTechES
      @DotTechES  ปีที่แล้ว

      Gracias por el comentario, ya estamos trabajando en el siguiente video! 💪

  • @drojom
    @drojom ปีที่แล้ว +3

    Genial como siempre. Muchas gracias por compartir🤩

    • @DotTechES
      @DotTechES  ปีที่แล้ว +1

      Muchas Gracias @drojom por estar ahí, esperamos seguir creando más contenido para compartirlo con todos!

  • @MesiahS_JR
    @MesiahS_JR ปีที่แล้ว +2

    Gran vídeo! Gracias por vuestro contenido! Siempre de 10!

    • @DotTechES
      @DotTechES  ปีที่แล้ว

      Gracias! Nos vemos en el próximo 💪💪

  • @carmenfernandez8266
    @carmenfernandez8266 ปีที่แล้ว +2

    Que buen video. Me lo apunto😊..Esperando el siguiente..

    • @DotTechES
      @DotTechES  ปีที่แล้ว +1

      Gracias Carmen! Pues el siguiente será un poco más práctico y, posteriormente continuaremos con los patrones creacionales 💪

  • @elvinantoniomendoza9631
    @elvinantoniomendoza9631 3 หลายเดือนก่อน +1

    Buen día, tremendo video y explicación, gracias por este tipo de contenido. Tengo una duda en la parte del CLIENTE, el cual en cualquier momento tendría que afectarse si se agregase un nuevo producto, rompiendo el principio OPEN-CLOUSE, sé que con la estructura de FONDO queda perfecto todo, pero en esta parte del cliente que se haga ya sea desde Consola o Grafica se tendría que tener una sentencia SWITCH para crear la instancia CONCRETA del producto, podría alguien ILUMINARME en esta parte?, muchas gracias.

    • @DotTechES
      @DotTechES  3 หลายเดือนก่อน +1

      En esta parte tienes que tener una acción que dispare la creación. Podría ser totalmente declarativo, por ejemplo en una interfaz gráfica tendrías botones que seleccionan en concreto que necesitas y podrías inferir la selección de creación. Si procediera de otro sistema, se debería pensar el problema concreto y se podría inferir la decisión a través de una estrategia concreta seleccionada por otro sistema.

  • @leow375
    @leow375 10 หลายเดือนก่อน +2

    La verdad no me quedo claro que creator elegir, entiendo que en el ejemplo que das decis con una terminal o una aplicacion grafica y me hace mucho sentido, pero en el caso que levantes los datos desde una BD no se me ocurre otra opcion que aplicar un simple factory aunque eso me lleve a romper el principio de OCP

    • @DotTechES
      @DotTechES  10 หลายเดือนก่อน +4

      Hola @leow375 gracias por comentar,
      Creo que el problema no está en el patrón factory-method, sino en el switch de selección de la operación a realizar, el desconocimiento de la operación a priori nos hace tener un switch o una serie de if-else para determinar qué Creator concreto usar, y ahí es donde rompemos el OCP. No obstante, tenemos algunas maneras de evitar atarnos al switch (habría que tener código y problema concreto y ver todo el conjunto de la aplicación) pero podríamos intentar aplicar algunas de estas técnicas:
      1. Crear un mapa/diccionario de Creators. De esta manera tendríamos un mapa donde la clave podría ser un tipo de registro (por ejemplo userType) y el valor es una instancia del Creator concreto correspondiente.
      2. Puedes usar reflexión/introspección para instanciar el Creator correcto (creo que esto sería lo más fácil a priori para solucionar el problema).
      No obstante, si este mismo problema que planteas te aparece en otros patrones o circunstancias no es un problema de usar ese patrón concreto, sino de una etapa previa de "interacción con el usuario del sistema" que en este caso sería la base de datos.
      Un saludo y muchas gracias !