Hola Martín! Estaría bien retomar este curso de Patrones de diseño y terminar de añadir algunos patrones como son: Builder, Prototype, Mediator, Facade, etc... Un saludo, y gracias! ^^
@kraller74 жыл бұрын
se complementa genial con el abstract factory para instanciar las diferentes estrategias
@BettaTech4 жыл бұрын
Exactamente!!! :D
@TheTheokatz3 жыл бұрын
@@BettaTech No puedo ver bien como se implementarían el patrón Strategy y el Abstract Factory juntos, si estuviéramos buscando como "combinar" efectos de ataques se me viene a la cabeza el patrón decorator. ¿Alguno podría explicar como funcionarían Strategy y Abstract Factory juntos?
@BettaTech3 жыл бұрын
@@TheTheokatz con la factoria abstracta montas las clases necesarias para poder crear las estrategias. Es decir, creas las propias estrategias usando una factory en vez de instanciarlas directamente
@TheTheokatz3 жыл бұрын
@@BettaTech Gracias por responder tan rápido. ¿Creando las estrategias con una Factory como nos ayudaría a combinar ataques? Cómo por ejemplo un ataque que baje la velocidad + un ataque que envenene. No entiendo esa parte. ¿O no se supone que la combinación de patrones nos ayude a hacer eso? ¿Sino que solo es para tener un mejor y más limpio código? Un saludo!
@BettaTech3 жыл бұрын
@@TheTheokatz Con la factory creas estrategias. Puedes también combinar las estrategias con el patron decorator para hacer lo que dices! Las lógica de crear ataques decorados podria vivir en el factory y ya tienes ahi una triada espectacular 😄
@nicolascometta2834 жыл бұрын
Un patron que puede utilizarse es el State, y segun el estado en que se encuentre el pokemos cambie su comportamiento (State es un patron de comportamiento) ya sea que este noqueado, o durmiendo, etc. o tal vez enfurecido y esto haga que sus ataques sean mas potentes, por ejemplo. Saludos desde Argentina!
@diegotoro19984 жыл бұрын
Muchas gracias por subir este tipo de contenido. No he encontrado ningún vídeo en español que tenga tanta calidad y con una explicación tan concisa y clara como esta. Espero que el canal siga creciendo.
@BettaTech4 жыл бұрын
Mil gracias!!!!!
@johnnyblack6124 жыл бұрын
Joder tío eres un crack, no logro comprender como entiendo algo tan complicado tan fácilmente, deberías dar cursos joder, pagaría lo que sea porque seas mi maestro
@luisalfonsohuertasdelgado42543 жыл бұрын
Hola guapo
@trhashthings80454 жыл бұрын
Una felicitacion por que son de los mejores videos donde explican patrones de diseño en español, una recomendacion, hacer la implementacion en codigo y correrla para que se entienda la funcionalidad del patron de forma visual
@kevte46034 жыл бұрын
Despues de enseñar todos los patrones de diseño, te animarias a hacer un juego utilizandolos?
@KronenR2 жыл бұрын
se ve que no
@daguttt2 жыл бұрын
@@KronenR En efecto xd
@lucianoandres371611 ай бұрын
pues claro que no :V
@godmode36117 ай бұрын
Un juego es grande je je
@klapx84994 жыл бұрын
Estaría muy bueno que hagas un video sobre la combinación de ambos patrones, strategy y factory, utilizados en un ejemplo sencillo.
@jesus_r43464 жыл бұрын
Muchas gracias por el video. Espero que sigas subiendo el resto de patrones.
@noface9604 жыл бұрын
Excelente explicación, siempre es bueno dar ejemplos reales de aplicación
@devy14512 жыл бұрын
Muchas gracias, se agradece inmensamente, por favor, más explicaciones y más ejemplos para pratones de diseño para videojuegos sería estupendo!
@JonathanAndres4 жыл бұрын
Muchas gracias por este contenido, personalmente me encanta. Podrías alguna vez hablar sobre inyección de dependencias y un contenedor de inversión de control?. Un saludo!
@davidmata31044 жыл бұрын
A mi también me gustaria ver como se implenta un IOC
@sergioandrescelemin34294 жыл бұрын
Sería genial que hablaras del patrón Command, me voló la cabeza cuando lo escuché por primera vez!
@JoseRodriguez-yh8oy2 жыл бұрын
yo al leer este patron command y el strategy me enrede.
@sirsherguioth45734 жыл бұрын
Muchas gracias por tu vídeo, la verdad es que son muy buenos. No sé si soy el único, pero el patrón strategy me recuerda mucho a la inyección de dependencias.
@BettaTech4 жыл бұрын
Se utiliza de hecho la inyección de dependencias, ya sea por constructor o en la misma funcion :D
@jesusvargas30634 жыл бұрын
Genial! Espero el siguiente vídeo con ansías.
@josoza2484 жыл бұрын
y no vale el uso de Switch, que nos conocemos :), jaja justo asi.
@danieluxury3 жыл бұрын
quisiera entender cual es el problema con el uso del switch .. me dedico a la programación en sistemas embebidos, y lo usamos muy frecuentemente.. pero ya he escuchado varias veces cosas negativas del uso del switch, sin entender cual es el problema.
@uliseseseses4 жыл бұрын
Me ayudó en entender el patrón para mí estudió, muchas gracias y sigue subiendo más
@nicolaseckell96914 жыл бұрын
Este patrón es como hacer poliformismo básico. Estaría muy bueno combinarlo con el patrón abstract Factory
@MsGuitarrista19994 жыл бұрын
crack de cracks. Espero con ansias los siguientes patrones!
@jorgesanclemente40672 жыл бұрын
Estoy estudiando la asignatura de Ingeniería del Software, en tercero de Ingeniería Informática y vienen genial estos videos. Gran trabajo crack!
@BettaTech2 жыл бұрын
Mil gracias! Y mucha suerte 😃
@cristianfs954 жыл бұрын
la concha de la lora pelado, me vuelvo loco. que buen canal, dios mio. te conocí por resolver el ejercicio de entrevista laboral y gracias a ese me doy cuenta que subís contenido espectacular. Te ganaste un fiel seguidor viejo, abrazo fuerte desde argentina! 🇦🇷
@barbieroalex4 жыл бұрын
Gracias!, tremendo!, espero los próximos vídeos 🧠
@patousarg4 жыл бұрын
El patrón que te va a dejar combinar diferentes tipos de estrategias es el composite!! Se acopla muy bien al strategy 😉 Saludos desde Argentina!
@BettaTech4 жыл бұрын
Exacto! Composite es MUY interesante
@patousarg4 жыл бұрын
@@BettaTech muy bueno el video, olvidé felicitarte por tu simplificidad a la hora de explicar!
@Cronofear Жыл бұрын
Gracias por este video. Parece que este patrón es justo lo que necesitaba para diseñar mi sistema de crafteo de magia similar a Mages of Mystralia.
@ivanmoreno68233 жыл бұрын
Creo que este patrón combinaría muy bien con el patrón decorator.
@FedericoAlemany3 жыл бұрын
Yo creo que no, porque el patrón Decorator implica la aplicación simultanea de muchas clases (anidadas), mientras que en este patrón se selecciona (de forma excluyente) una u otra estrategia (pero no ambas al mismo tiempo). Saludos!
@ivanmoreno68233 жыл бұрын
@@FedericoAlemany Hola! Hace 8 meses que escribí ese comentario así que me has pillado por sorpresa jajaja. Yo me refería a que se podría inyectar una estrategia que fuera un decorator, a la clase a la cual se le inyecta no le importa que decorator es porque todos comparten la misma interfaz. Quizás no es la mejor forma de usarlo, como el patrón decorator es estructural y el estrategia de comportamiento no me había parado a compararlos, pero tu reflexión me ha parecido interesante. Saludos!
@esaraviam3 жыл бұрын
Gracias por compartir tu conocimiento 👍
@stephentellez57182 жыл бұрын
muy interesante, creo que necesitare ver otra ves el video para interiorisar los comceptos
@emmanuelquesada70624 жыл бұрын
ojala todos los profesores explicaran así buenísimo con juegos es mucho mejor y mas entendible
@mauricioluisvega83424 жыл бұрын
ME ENCANTO. Ahora no hay excusas, encierro + codigo...Cuidate mucho.
@eleserrano4 жыл бұрын
No se como puedes explicar todo tan bien, en serio me encantan tus videos. Podrias hacer un peqeuño videojuego implementando este patron estaría muy guay
@666zulett4 жыл бұрын
me encanto este patron va tiempo que me quiero leer el desing patterns pero me daba una pereza terrible uno por que esta en ingles y otro por que son como 300 paginas jejeje pero tu explicacion creo que me basta al menos hasta que encuentre fuerzas para leerme el libro, un gran video sigue asi
@RoninFlame3 жыл бұрын
Lo estaba aplicando sin saberlo pero gracias a esto lo implementare mejor, gracias
@VictorMM4 жыл бұрын
Gran vídeo, hay que fomentar este tipo de contenido. Pero creo que el ejemplo del Logger no es un Patrón Strategy es un ejemplo de Inversión de dependencias.
@luis96xd4 жыл бұрын
Excelente video, estuvo muy bien explicado :D
@sirixb3 жыл бұрын
Excelente video gracias, ahora Pokémon me recordará fácilmente este patrón
@soyviejodemedeme4 жыл бұрын
Muy interesante, me acabo de enterar que utilizo el patrón Strategy muchas veces. Realmente si aplicas el segundo principio solid y el quinto, estarías aplicando este patrón, no?
@gabokings2603884 жыл бұрын
Que genial video, tengo varios anios programando pero es muy util, respondiendo a tu pregunta pienso que seria Decorator
@4strodev2 жыл бұрын
Viendo este video me ha hecho pensar que los route guards de angular parecen un ejemplo del patrón strategy o al menos eso me ha parecido a priori.
@mariobesednjak45294 жыл бұрын
Excelente Bideo Betta, para cuando mas, justo ando con eso en la facu y me ha ayudadi un monton, saludos!
@jonathanadamson52094 жыл бұрын
Excelente contenido, muy buen y clara tu explicación, muchas gracias!
@raulbolanos49203 жыл бұрын
Excelente explicación.
@damianpinones58184 жыл бұрын
Muy buena explicación! Muchas gracias! Saludos desde Argentina!
@angelicareyes6934 жыл бұрын
Hola Betta, estoy realizando un programa "tipo paint" solo con figuras primitivas. Que diseño de patrón crees que se ajusta?
@sebastianvargasarenas1244 жыл бұрын
Si vas hacer modificaciones de las figuras y quieres evitar tocar la estructura original de ellas, podrías usar el patrón: "Prototype", así puedes por ejemplo tener varios rectángulos con diferentes colores y tamaño en el tablero sin modificar el original.
@angelicareyes6934 жыл бұрын
@@sebastianvargasarenas124 Gracias! estaba pensando en otro patrón pero éste se ajusta perfectamente.
@nachociano5468Ай бұрын
El contexto del Strategy puede ser la misma clase Main? O es necesario crearlo?
@ElSharaawe2 жыл бұрын
Es el principio de inversión de dependencias en toda regla!
@diegoalejandrogutierrezsua88494 жыл бұрын
Muy interesante, seria genial que hablaras de la arquitectura y patrones que usan los frameworks más famoso, en el caso de node express en el caso de php laravel y symfony, esto con el fin de entender de forma más profunda como funcian estos frameworks y de esta manera que nosotros no tengamos que adaptar el sistema al framework más bien que el framework se adapete al sistema
@SuperSpeed524 жыл бұрын
Y al final de este video amigos oficialmente son capaces de crear un intérprete o un entorno de ejecución de un lenguaje de programación
@ItsGonnaRaiN1434 жыл бұрын
Eres muy bueno explicando, seria genial que hagas un video acerca de CQRS + Event sourcing que es tendencia ultimamente.. un saludo!
@xaviergomezdelatorre67184 жыл бұрын
Tengo una pregunta aprovechando que eres ingeniero y has hecho bastante programación. ¿Para software de proposito general, ves que tenga sentido estudiar lenguaje de bajo nivel? El año que viene en la universidad tengo Administración de Sistemas Operativos y no le veo el sentido para lo que quiero aprender yo. Hay otra rama a la que me puedo cambiar, y que no hay lenguaje de bajo nivel, ni profundizan en el protocolo EIGRP (tampoco sé para que me puede servir eso a mi). ¿Qué me recomendarías?
@argalothrengade55914 жыл бұрын
Este anime me encanta.
@aurox10004 жыл бұрын
Excelente video
@angienavia77304 жыл бұрын
Pucha man, eres muy bueno explicando, mil gracias! .-.
@johnromero62993 жыл бұрын
Excelente! saludos desde colombia
@ivanpallares90393 жыл бұрын
Cuando la estrategia se decide en tiempo de ejecucion seguimos considerandolo patron strategy? El ejemplo seria un convertidor de formatos de texto al cual le pasamos un parametro (json, yml, csv...) y el ya decide dinamicamente que estrategia ejecutar (normalmente usando un metodo "supports(...)" de las estrategias concretas)
@rainbow-jw3og3 жыл бұрын
al final que solucion usaste? tengo la misma duda
@chelendezАй бұрын
Eh tenido ese problema pero no existe una forma clara, una forma que vi es usar reflection , es decir, que puedes instanciar clases en base a string de forma directa pero no es óptimo aunque puede q sea irrelevante si tu proyecto no es un juego o necesites alta eficiencia, lo otro, es usar if la cual tiene sentido porque no hay otra forma , el detalle está que esos if son sencillos, solo comparar string, y recuerda que el patrón encapsula en clases y en esa clase no tan solo es para devolver un valor, sino puedes meter mas operaciones, cálculos cambiar valores, los ejemplos que ves en Internet son sencillos pero en proyectos reales conlleva a mas complejidad.
@Ditmaros14 жыл бұрын
hermoso video muy bien explicado
@delciopolanco3 жыл бұрын
Hola @BettaTech quisiera entender como entonces haces la diferencia de pasar la propiedad path en el constructor luego de hacer la injeccion de dependencia de la interfaz Logger. Esa parte no me queda claro.
@sgssergio Жыл бұрын
Colo se hace el cambio de estrategia en tiempo ee ejecucion sin usar ifs?
@erosjoseadarragajimenez Жыл бұрын
Muy buen video, para ti cuales serian los patrones de diseño mas importante que tiene que saber un dev junior java y angular?
@BettaTech Жыл бұрын
Factory puede ser uno muy útil! Para angular, los Observer son el dia a dia
@thenaru264 жыл бұрын
Me puedes decir cuál es el mejor idioma de programación y el más fácil de aprender es que soy un principiante
@mclaren95424 жыл бұрын
C++
@staljumper4 жыл бұрын
Eso que dices no tiene mucho sentido a mi modo de ver, pero te recomiendo Java. Un saludo.
@GustavoGarcia-ik2uh4 жыл бұрын
PYTHON
@itmarck4 жыл бұрын
Depende mucho a qué te quieras dedicar. Por ejemplo si vas por web no es tan necesario que te líes con lenguajes como C++ o Java. Pero si empiezas con esos vas a tener una gran ventaja por conceptos y una visión más amplia. Por otro lado JavaScript o Python como primer lenguaje está correcto.
@davidnavarro2654 жыл бұрын
Cómo todo en desarrollo, depende. Depende de lo que quieras hacer. Si quieres, escríbeme, y te hablo desde mi experiencia. No estudié programación en la universidad y hace 3 años hice un cambio de carrera y ahora trabajo como desarrollador web
@joshdev154 жыл бұрын
Tus videos son geniales, pero tengo una pregunta, por lo que he visto hasta ahora, todos los patrones de los que has hablado llevan consigo cosas muy especificas de la POO (Encapsulamiento, Polimorfismo, Herencia), sin embargo habra algun patron que ayude en un lenguaje que no tiene todas la caracteristicas de la POO como Golang, apenas lo aprendo pero me gustaria aplicar una buena estructura y codigo limpio desde el inicio, gracias...
@davidalbertoortizmartinez61513 жыл бұрын
Con que otros patrones se podría combinar este aparte del factorymethod factory?
@wuilliam3214 жыл бұрын
Excelente!!!!
@yohcg2 жыл бұрын
como cuando no te das cuenta que ya estabas implementando este patron...... de alguna forma se parece a factory, no? Creo que es mi problema con los patrones de diseño. porque cuando preguntan por definiciones en entrevistas, algunos patrones son tan similares que me cuesta explicarlos. Seguire viendo esta serie de videos. Saludos.
@manuvalbu2 жыл бұрын
Con el patrón puente no se podría combinar para reducir el número de combinaciones de ataques con efectos?
@BettaTech2 жыл бұрын
Si! Seria una opcion 😊
@bawual92234 жыл бұрын
Hola,una consulta que utilizas para representar graficamente el codigo que nos muestras?,o es algun editor ? sldos
@davidleonardobernal613 жыл бұрын
Hola, viendo lo que explicas en otro video se parece mucho al patrón factory method. Cuál es la diferencia entre estos dos? O como puedo saber cuando usar uno u otro?
@BettaTech3 жыл бұрын
El patrón Factory lo que hace es CREAR. Es decir, los dos usan polimorfismo, pero uno busca devolver objetos (factory) y otro gestionar comportamiento (strategy).
@hugomontero89234 жыл бұрын
Podríamos utilizar el patrón command para ejecutar múltiples funciones de ataque?
@santo9984 жыл бұрын
¿No se complementa con el patrón Decorator? El ejemplo de los distintos ataques de los Pokemon me parece que también se puede usar en conjunto con el patrón Decorator. ¿Esto es así? ¿Un ejemplo para bajarlo a tierra? Es que no lo tengo muy claro...
@davidmata31043 жыл бұрын
Que diferencia existe entre el Strategy pattern y el Bridge pattern? Pd. Muy buenos tutoriales, sigue sacando videos de patrones de diseño
@pfarinav2 жыл бұрын
Un año tarde, pero por si alguien más lo lee: El patrón strategy te permite cambiar el "que" para caso que necesites, como se ve en el video. Bridge por otra parte tiene como objetivo separar entidades relacionados en 2, por ejemplo y siguiendo con pokemon. Si tienes una clase "pokemon" y les quieres dar tipos, podrías terminar con una explosión de clases al generar las combinaciones, entonces creamos un clase "type" que es independiente de la clase "pokemon" pero que está última puede implementarla, así "type" puede crecer, modificarse o agregar tipos, independiente del pokemon. En este caso no estamos intentando implementar el "que" hace cada tipo, como si ocurre en el ejemplo de los ataques, donde se usa el strategy
@emmanuelvalverderamos4 жыл бұрын
Que libro de patrones de diseño recomiendas
@ColdRooster4 жыл бұрын
Te ganaste un suscriptor.
@davidquezada21164 жыл бұрын
4:14 Creo que se podría hacer con el decorator pattern.
@camilorodriguezexposito2613Ай бұрын
Hola Martín, se agradecería un vídeo práctico, con ejemplos de código, y no simplemente un rollo teórico
@Mouta773 жыл бұрын
Pero no tengo claro como evitas utilizar el "IF", en algún momento tienes que indicar la estrategia a utilizar en cada caso, y esto, se haría con un IF, no?
@franciscoantilef22714 жыл бұрын
Esto es inversion de dependencias para un comportamiento ? , genial el video
@GuillermoAlfonsoMorales4 жыл бұрын
Cásate conmigo. Explicas muy bien.
@terse45398 ай бұрын
Y para saber que estrategia usar... otro montañas de if?
@EdgarPachelo3 жыл бұрын
Se puede integrar Decorator, Singlenton, factory y mas
@leonardodavinci88754 жыл бұрын
Pienso que para poder combinar ataques podemos apoyarnos en el patrón Composite debido a que esto ya nos ayudaría a crear ataque mucho más complejos. Respuesta a la pregunta del minuto 4:30. :)
@leonardodavinci88754 жыл бұрын
Aunque también si una estrategia es díficil de adaptar a la herencia solo debemos usar el patrón de Diseño Adapter.
@combifps2 ай бұрын
Strategy es el mismo patrón que Command? o son patrones diferentes?
@carlos43042974 жыл бұрын
Excelente
@xavivillarongagarcia82554 жыл бұрын
Brillante!!
@m4tywing4 жыл бұрын
Los ejemplos de interfaces stán en JS?
@ivonneburgos79404 жыл бұрын
Buen video!
@Zeus312224 жыл бұрын
Que tal seria una combinación del strategy con el builder?
@esnoz Жыл бұрын
La estructura me recuerda al patrón Observer.
@Rigal014 жыл бұрын
Si utilizas una estrategia para registrar en un Log estás violando el principio de responsabilidad única y corres el peligro de que los métodos de tu clase queden guarreados y con ruido del log en medio de su logica propia. Para un Log sería mejor utilizar un patrón decorator para que mediante la inyección de dependencias puedas aislar completamente el log del resto de la logica de la aplicación. Así es como lo comenta Mark Seaman en "Dependency Injection in .NET" , una lectura bastante recomendable. La mejor opción sería combinar el patrón decorator con strategy de forma que si tienes tu clase principal con el método makeSomething. Un Interfaz IPokemonBattleManager con la interfaz, una clase PokemonBattleManager y otra clase PokemonBattleManagerLog que implimentan dicho interfaz. En el constructor de PokemonBattleManagerLog pasarias como parametro IPokemonBattleManager y otro LogStrategy, de forma que en cada método que interese loguear, ejecutarias un método de la clase LogStrategy y el método de la clase IPokemonBattleManager. Si todas las clases que implementan IPokemonBattleManager tienen en su contructor un parametro de la misma interfaz se pueden ir apliando para ampliar funcionalidad. Por ejemplo, gestión de errores, control de accesos, etc.
@landyy69884 жыл бұрын
Hace un video hablando de como estudiar programacion sin ir a una universidad pero quiero aprender un lenguaje a fondo de forma autodidacta
@danielclow Жыл бұрын
5:30 En ese ejemplo que va a ejecutar el app? el ConsoleLogger o el FileLogger?
@erikomarmontescastro1008 ай бұрын
la app ejecutara la clase concreta (que hereda de Logger) que el programador le pase en el metodo Run(), el metodo Run() recibe cualquier tipo de instancia que herede de la clase base Logger, entonces, el programadore puede pasarle la clase concreta que él desee
@ezecel93 жыл бұрын
Puede que sea igual al patrón Factory?
@vktop2 Жыл бұрын
Buen video! Cual es la diferencia entre strategy y factory?
@BettaTech Жыл бұрын
Factory es un patrón creador: te devuelve objetos que luego puedes usar. Strategy es un patrón de comportamiento, ejecuta lógica (siendo puristas, esta lógica no crea, porque la intencionalidad de ambos patrones es distinta). Si podrias tener, por ejemplo, una factory que te devuelve diferentes tipos de estrategias que luego usas
@josejimenez-wd5rw4 жыл бұрын
excelente !
@alexvarela53394 жыл бұрын
Patron command seria bueno que lo explicaras
@ericktucto4 жыл бұрын
Cuando empezaste a hablar sobre el Logger, me sonaba mucho al patron Facade, ¿Que diferencia hay entre los 2? --- Updated No son iguales, ya investigué
@daguttt2 жыл бұрын
xd
@jhonvalencia69024 жыл бұрын
Tengo una duda, a mi parecer detrás de este siempre hay un Factory o me equivoco? Saludos desde Colombia excelente contenido .
@BettaTech4 жыл бұрын
Se puede, y de hecho es muy utilizado! :D
@pfarinav2 жыл бұрын
Strategy + Decorator
@cmaxhm4 жыл бұрын
Hay algo que no entiendo. En el ejemplo del Logger, cómo sabe el contexto cual implementación se usará?
@BettaTech4 жыл бұрын
Se la inyectan como dependencia. La gracia es que el contexto no lo sabe (ni deberia saberlo)
@joalbertgonzalez80854 жыл бұрын
@@BettaTech justo estaba buscando esta respuesta, tenia la misma duda que Carlos, entonces depende de lo que importes.
4 жыл бұрын
@@BettaTech gracias por la respuesta pero tampoco entiendo eso, ya que en el 5:31 la clase APP (contexto) esta llamando a la clase logger "run(logger: Logger): void" o es que es ahí donde debería ser algo como "run(logger: FileLogger): void" ??
@Richard-xh5iw4 жыл бұрын
como puedo conectarme a otra PC con la internet. Usando direccione IP pero que sea capas de funcionar en cualquier tipo de sistema operativo Quiero crear una programita de consola simple que pueda enviarse mensaje solo texto a otra pc conectada a la Internet, sin importar Que sistema operativo use. E intentado hacer un programa con socket con windows winsock pero no funciona de ninguna forma me sale demaciados errores tambien probe con TELNET pero tampoco me dejava ver la ip de mi otra pc
@DanteAlferezCondori3 жыл бұрын
Y que pasaría si cada estrategia necesita de datos de entrada diferentes?
@Djstudiosmexico4 жыл бұрын
Genial no das cursos de programación implementado todo esto tipo de patrones en udemy