PATRÓN de DISEÑO BUILDER en JAVA - Tutorial Completo Fácil

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ต.ค. 2024

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

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

    🔔 ¡Ayúdame a llegar a 50.000 subs! 👉 2ly.link/20Hmi
    🎉 Apóyame - 2ly.link/20HnV
    👨‍🏫 MENTORIA GRATUITA 👉 2ly.link/20FqN
    🎁 CURSO GRATUITO de JAVA 👉 2ly.link/20Hme
    🎁 CURSO GRATUITO de SPRING BOOT 👉 2ly.link/20HmM
    📱Redes Sociales 👉 2ly.link/20Hmg

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

    Gracias, lo entendí perfectamente y me aclaraste una duda que tenía. ¡Buen trabajo!

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

      ¡Me alegro mucho! Gracias a ti por ver mis vídeos ✌️😄

  • @sagi33delriego82
    @sagi33delriego82 หลายเดือนก่อน

    Gracias Bien explicado

  • @nabuconodozord
    @nabuconodozord ปีที่แล้ว +4

    Excelente video, muy buena explicación. Justo andaba estudiando este tema. Lo que te quería recomendar es el tema del volumen de la voz, a veces suena muy bajo, pero en general todo va genial!

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

      ¡Muchas gracias, me alegro que te guste y que me hayas dejado tu comentario! Tendré en cuenta sobre el volumen en los próximos vídeos 😉

  • @dcloki789
    @dcloki789 หลายเดือนก่อน

    excelente explicacion, gracias

  • @DavidGarciaGamboa
    @DavidGarciaGamboa 2 หลายเดือนก่อน

    Muchas gracias excelente explicacion.

  • @markcatthat254
    @markcatthat254 7 หลายเดือนก่อน

    Muchas gracias. Bien explicado.

  • @carolinagomez8367
    @carolinagomez8367 6 หลายเดือนก่อน +2

    Hola buenas! ¿Como va? Me gusto tu explicación, en mi empresa lo usan tal cual. Pero tengo una duda al respecto:
    En otro ejemplo vi que utilizan lo mismo pero colocan el siguiente metodo en la clase externa.
    public static Builder build() {
    return new Builder();
    }
    Este metodo es necesario? Para que serviria?
    Ejemplo:
    public class Cliente {
    public String nombre;
    public Cliente() {
    }
    public Cliente(Builder builder) {
    nombre = builder.nombre;
    }
    public static Builder build() {
    return new Builder();
    }

    public static class Builder {
    public String nombre;

    public Builder nombre(String nombre) {
    this.nombre = nombre;
    return this;
    }
    public Cliente build () {
    return new Cliente(this);
    }
    }
    }
    Saludos.

    • @programando_en_java
      @programando_en_java  6 หลายเดือนก่อน

      ¡Hola, gracias por tu comentario! Lo que indicas ahí no es un método, es un constructor y lo que recibe como parámetro es un "Builder" es decir, en vez de pasar por parámetro "Nombre" y "Genero" es más práctico enviar un objecto de la clase "Builder" para inicializar los parámetros de la clase "UsuarioDTO". Espero que se haya entendido, si no, házmelo saber y intento explicarlo de otra forma 😄🤘

    • @carolinagomez8367
      @carolinagomez8367 6 หลายเดือนก่อน

      @@programando_en_java Ay, perdon. Pense que no me habias contestado y como me di cuenta porque era me surgio otra duda y modifique la pregunta. Muchas gracias por la respuesta!!! :)

    • @programando_en_java
      @programando_en_java  6 หลายเดือนก่อน

      @@carolinagomez8367 Entiendo que el método que dices lo tienen para poder usar el método en vez de crear un objecto Builder en el código pero yo lo llamaría "builder()" o "createBuilder()" y no "build()", aunque esto deja de tener un poco de sentido si el constructor vacío está público.

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

    Hola. En la clase interna en el metodo build instanciaste la clase externa UsuarioDTO. ¿Es esto posible si la clase es interna y estatica?

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

      ¡Hola! Si te refieres a crear una instancia en el método build() para una clase que es interna y estática, si, por supuesto que es posible siempre. Te refieres a algo como esto?
      public class ClasePadre {
      public static class Clase1 {
      public ClasePadre.Clase2 build() {
      return new ClasePadre.Clase2();
      }
      }
      public static class Clase2 {
      }
      }

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

      @@programando_en_java Gracias por tu respuesta. Exelente canal.
      Me referia a algo como lo que hiciste en el ejemplo del video.
      Algo como:
      public class UsuarioDTO
      {
      private final String nombre;
      .
      .
      .
      public UsuarioDTO(Builder builder)
      {
      this.nombre = builder.nombre;
      }
      public static class Builder
      {

      private String nombre;
      .
      .
      .

      public UsuarioDTO.Builder nombre(String nombre)
      {
      this.nombre = nombre;
      return this;
      }
      public UsuarioDTO build()
      {
      return new UsuarioDTO(this);
      }
      }
      }
      Son 2 preguntas:
      1) Mi pregunta es si realmente es posible crear dentro del metodo build() de la clase interna Builder una instancia de UsuarioDTO que es de la clase externa.
      Pensaria que algo asi no se puede hacer por ser Builder una clase interna y estatica.
      2) Es obligatorio que los metodos que devuelven la clase externa como los "get" que son metodos de la clase interna Builder utilizen la nomenclatura claseExterna.claseInterna
      para referirse a que se devuelve una instancia de la clase externa o simplemente lo escribes con el punto para efectos didacticos. Como lo hiciste en el metodo:
      public UsuarioDTO.Builder nombre(String nombre)
      {
      this.nombre = nombre;
      return this;
      }
      De antemano gracias por tus respuetas. Un Suscriptor.

    • @programando_en_java
      @programando_en_java  ปีที่แล้ว +4

      ​@@jaimealbertorocha5961 Hola hola! Te respondo:
      1) Claro que si se puede, en el vídeo se ve sin problemas :)
      2) No, no hace falta, pero me gusta indicar que estoy usando una clase interna, ya que si solamente indicase la clase podría confundir al programador que vea el código, pudiendo creer que la clase es externa en algún fichero.
      Si tienes más preguntas, cómo siempre, no dudes en decírmelo. Un saludo y ¡gracias por los ánimos, seguiremos con el canal enseñando! 😉

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

    Hola Ricardo, muchas gracias por tus videos, están muy bien hechos y bien explicados pero te quería hacer una pregunta. ¿Como configuras Intellij para que ponga encima de las clases tu nombre: RicardoRB? Gracias.

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

      Yo creo que es porque el está Logueado en el IDE

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

      El nombre aparece porque está conectado a un repositorio git y de ahí que obtiene mi nombre :)

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

      @@programando_en_java gracias por la info hermano!!

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

    ¿Qué diferencia hay entre hacerlo con builder y solamente tener un constructor vacío para luego llamar a cada setter?

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

      Un código más legible y te ahorras líneas de código :)

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

      @@programando_en_java es verdad, además de estandarizar la creación de los objetos con, por ejemplo, las validaciones en el builder.

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

    Oye amigo buenísimo! muchas gracias, sencillo, rápido y al grano, es el equivalente al "Hola Mundo" pero en el patrón de diseño Builder. Gracias por continuar con el diseño de patrones, otro patrón interesante es el Observer, estaré atento para cuando lo subas ;) Porque lo haces de una manera super sencilla y práctica, es más fácil captar la idea de esa manera.

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

      ¡Muchas gracias por tu comentario! Me alegro mucho leerlo, sinceramente creo que mis vídeos todavía no son lo buenos que deberían, mis ediciones no son muy buenas y me gustaría elevar la calidad, pero muchas gracias por tu comentario, me ayudan a seguir para delante 😄

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

      @@programando_en_java amigo te digo, es verdad que hay otros TH-camrs que tienen una edición de vídeos espectaculares, miniaturas muy buenas, etc. Eso con el tiempo lo irás mejorando de seguro, pero valoro mil veces más tú contenido que el de ellos. Tú contenido es educativo y el de ellos es entretenimiento e informativo, casi casi una pérdida de tiempo, pero con el tuyo aprendo y aplico. Y eso es lo que quiero ;) Saludos amigo

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

      @@gindCode ¡Muchas gracias Guillermo! Agradezco mucho tu comentario, ¡vamos a seguir siempre mejorando! 💪😉

  • @miguelangelsanchez4279
    @miguelangelsanchez4279 ปีที่แล้ว +4

    el DTO lo hace bien

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

    BUEN PATRON PERO IGUAL SE ESCRIBE MAS CODIGO. 🙂

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

      Si que se necesita un poco de código pero gracias a Lombok esto se automatiza y no es necesario, si no has visto el vídeo te lo aconsejo mucho 😎✌️: th-cam.com/video/DEk1B3KH9R0/w-d-xo.html

    • @enjoy21258
      @enjoy21258 5 หลายเดือนก่อน

      ​@@programando_en_java justo esto venía a comentar... Prefiero usar Lombok, claro que estamos usando una librería de tercero y bueno, eso no causa mucha gracia, pero el patron Builder y cargando tanto codigo todo para no pasar por el constructor ....