¿QUÉ es y CUÁNDO UTILIZAR el PATRÓN STRATEGY? - EJEMPLO en LARAVEL 👨🏻‍💻👩🏻‍💻

Поделиться
HTML-код
  • Опубликовано: 4 окт 2024

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

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

    Excelente, ya lo había aplicado en Laravel y ahora quise aplicarlo en Angular guiándome por este mismo video y espectacular, muchas gracias gracias!

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

    excelente el video, muy claro y al hueso ja..ojala que publiques otros patrones!!Saludo

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

      Si, se vienen varios patrones más

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

      @@return194estaré al tanto compañero..

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

    Sos un genio Return

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

    Muy buen video

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

    💯

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

    El mejor video que he visto sobre este patrón implementado en Laravel incluyendo videos en inglés y español, es una obra maestra didáctica sobre el tema, buenísimo.

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

    Creo que era mejor aplicar el patron state
    Buen video

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

      Sisi, es que hay muchos patrones similares, la idea es ir mostrando cada uno con un ejemplo para tener la posibilidad de decidir cuando se necesite
      Gracias por el aporte!

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

    genial muchas gracias investigando el patrón no me quedaba claro como implementar el contexto , tu video me ayudo muchísimo para resolver un problema de mi trabajo jajaj grande , vale ese cafe !!

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

      Me alegro que pudiste resolver

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

      @@return194 Exacto, a mi me pasaba lo mismo, pq en los textos aparece ese famoso "contexto" que yo pensaba que se refería al contexto en el que se necesitaba ... en este caso al controlador, pero súper bien que mostraste que era una clase aparte.

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

      @ Me imagino que hay otras formas de hacerlo, pero ami me parece una buena solución de esa forma descentralizandolo

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

    lo mejor que vi, muy buenos videos

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

      Muchas gracias, pronto haré más videos de nuevo

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

    EXELENTE VIDEO MUY CLARO Y BIEN EXPLICADO

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

    Muy claro todo!! Seguí haciendo videos así!

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

    Excelentes vídeos bro

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

    Muchas gracias

  • @united.in.dreams
    @united.in.dreams 3 года назад +2

    Muy buen tutorial, lo que si podrías bajar un poco la velocidad en cuando creabas los nuevos strategies para los diferentes escenarios.

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

      sorry pero pienso que esa es el chiste de que sea un video .... mostrar un ejemplo y los otros se hacen igual siguiendo la misma logica

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

    Excelente contenido!!!

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

    Buen video, bien explicado. 👍

  • @DanielAlvarez-rq5vu
    @DanielAlvarez-rq5vu 3 года назад

    Excelente la explicación, También me gustaría ver aplicado a PHP Puro sin Frameworks ni librerías

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

    clarisimo, muchas gracias, ahora me cayo la ficha

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

    Eso que acabas de hacer es el patrón factory 🏭. Generaste una fábrica para creación de nuevos objetos dependiendo de la necesidad del cliente.

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

    me gusta mucho los videos tuyos, podrias realizar alguno con la arquitectura hexagonal y sus ventajas?

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

      Es uno de los temas que tengo pensado para más adelante. Hay mucho por hacer y de a poco voy largando.
      Me alegro que te sirva, muchas gracias

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

      @@return194 la verdad que siempre prnse en como hacer mas limpia la logica de negocio y que sea de simple lectura, muy buena la implementacion y ayuda que das

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

    Puedo usar repositories adentro de strategys? Devolviendo el repositorio que solicite el cliente usando el patron strategy coomo en tu ejemplo. Buen video

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

      no sería lo correcto, pero como sería el escenario ?

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

      @@return194 Recibo un request desdel clien front (Cliente), en el controllador. En ese request pueden venir varios parametros = (rango de fecha, empresa, nombre de cliente, numero de cliente, codigo postal), pueden venir todos los parametros o pueden venir solo algunos de ellos. Al recibirlos hago un if else if para verificar que parametros me llegan y segun los parámetros armo la consulta en el modelo a la base de datos. Funciona muy bien, pero veo que hay mejores maneras posibles de hacerlo orientada a objetos. 1) desacomplando la base de datos del controlador 2) creando una clase por cada tipo de consulta, o un repositorio por cada tipo de consulta segun sus parametros.
      Controllador:
      public function filterProducts(FilterProducts $request){
      $dataRequest = $request->dataRequest ? json_decode($request->dataRequest,true) : false;


      $products = Product::filterProducts($request)
      ->selectRaw("*,match(name, content, slug) against('(".e(request('filter'))."*) (".e(request('filter')).")' IN BOOLEAN MODE) as relevance")
      ->orderByRaw('relevance DESC')
      ->paginate(isset($dataRequest["limit"]) ? $dataRequest["limit"] : 10);
      if(count($products)>0){
      return response()->json($products);
      }else{
      return response()->json(['error' => 'No hay resultados en la busqueda'],200);
      }
      }
      Model Products
      public function scopeFilterProducts($query,$request){
      return $query->when(!$request->status || ($request->status && $request->status === 0), function($query){
      return $query->with('category')->with('gallery')
      ->where(function($query){
      $query->whereRaw("match(name, content, slug) against('(".e(request('filter'))."*) (".e(request('filter')).")' IN BOOLEAN MODE)");
      });
      })->when($request->status && ($request->status === 1 || $request->status === 2), function($query){
      $query->with('category')->with('gallery')
      ->whereRaw("match(name, content, slug) against('(".e(request('filter'))."*) (".e(request('filter')).")' IN BOOLEAN MODE)")
      ->where('status',request('status'));
      })->when($request->status && $request->status === 3, function($query){
      $query->with('category')->with('gallery')
      ->whereRaw("match(name, content, slug) against('(".e(request('filter'))."*) (".e(request('filter')).")' IN BOOLEAN MODE)")
      ->where('inventory',0);
      })->when($request->status && $request->status === 4, function($query){
      $query->with('category')->with('gallery')
      ->whereRaw("match(name, content, slug) against('(".e(request('filter'))."*) (".e(request('filter')).")' IN BOOLEAN MODE)")
      ->onlyTrashed();
      });
      }

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

      Lee sobre las query scopes y decime si te sirve, con eso deberías poder solucionar creo yo

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

    Amigo un libro de programación orientada a objetos que reomiendes al 100%

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

    Muy bueno el video, pero según el diagrama, no me queda claro cual es la clase Contexto que hereda de la interfaz Estrategia

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

      El contexto no hereda la interfaz, el contexto sabe a que clase llamar según lo que necesita el cliente. Las clases que heredan la interfaz son las estrategias concretas (todas las clases de los estados, por ej: InTransit.php...) de esta forma todas tienen que hacer la implementacion del método de la interfaz

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

      @@return194 Muchas gracias por la respuesta!!