17
Jul

Factory Method en C# .Net | Patrones de diseño | design patterns | #4



buenos días buenas tardes noches madrugadas yo sector del león y este es un nuevo vídeo sobre patrones de diseño en zigzag punto net en este vídeo voy a explicar lo que hace el patrón de diseño factor y método este patrón de diseño para qué sirve bueno sirve por ejemplo cuando tienes varios objetos los cuales van a quedar de la misma clase y estos objetos quieres relevar la la creación de estos a una clase externa para que ya lleve a la logística por ejemplo imaginemos el escenario siguiente tenemos tres base de datos diferentes en cuanto a motor o en cuanto a servidor por ejemplo tres base de datos una están ahora con otras tantas se conservan a otra en sql entonces qué pasa si en estas tres bases de datos tengo los mismos elementos digamos tenemos la tarde usuarios en esas tres bases de datos y yo quiero una funcionalidad en común para esas tres bases de datos para una tabla por ejemplo pero esa lógica yo quiero que sea invisible para mí o para los programadores que van a quedar tomado van a crear sobre esta funcionalidad van a trabajar para eso es utilizar el factor y método porque creas tres objetos tres clases las cuales serán de la misma entonces tres clases hacen lo mismo pero a veces difieren por una línea que es la conexión a la base de datos esto es un escenario real ahora cómo se utiliza esto vamos a hacer unas clasecitas primero vamos a hacer una clase llamada nuevo agregar nuevo vamos a crear una clase que se llame bebida embriagante embriagante está en toda esta clase lo que va a hacer es crear abstracta solamente más débil para ser un contrato para hacer crear otras clases hijas de esta cual crear un método [Música] es abstracto y me diga cuanto me embriaga por ahora entonces así tan tan nos vamos a crear otra clase que debe de estar llamada vino tinto y esta variedad de esta clase los puntos bebida embriagante ahora yo tengo que hacer el método o wright o sobreescribir el método que está extractor ya que es éste ya tenemos esto simplemente va a poner un número supongamos que me embriaga por ahora el 20 por ciento supongamos 12 minutos ahora voy a crear otra clase que se llame y cerveza igual variedad de bebida embriagante y vamos a hacer lo mismo robert wright nada más está lo va a poner que me embriaga menos por ahora en braga cinco días ok ahora yo como trabajo yo no yo no voy a crear objetos a partir del abstracto porque la las las abstractas no pueden crearse a nada estas abstracta no pueden crear peros entonces yo quiero que esta creación de estos estos elementos no recaiga en crearlo directamente y yo voy a llevar la logística que para programas de invisible alguna una clase creadora después vamos a crear una nueva clase grados lo que hace esta clase simplemente va a crear objetos esto no tiene que querer quiere dar de nada pero que vamos a poner unas constantes para que me sirvan a la diferencia bill no tentó y cerveza soy lo que va a hacer es un método creador nada más todo vassallo estático y voy a regresar el padre que el de bebida embriagante sé que vamos a comer creador y aquí dentro vamos a poner un switch keys cuando sea vino tinto vamos a regresar en lo tinto y cuando sea cerveza vamos a regresar a cerveza así funciona él nada más vamos a poner un default return cuando no sea nada aquí podemos poner nuestro auto excepción retro luz no importa entonces aquí va a faltar algo que se llama el tipo tiempo que recibo entonces esta clase lo que va a servir para crear mis objetos aquí me estoy marcando un error no tiene tipo esta bebida embriagante está bien vaya que se llama igual esto entonces esta clase solamente me va a servir para crear objetos objetos que heredan sobre un don común en este caso me sirve para crear vino tinto y cerveza o la funcionalidad de vino y cerveza es la misma en cuanto al nombre de método pero difiere de lo que está internamente en el caso el ejemplo de base de datos es por ejemplo yo quiero crear un usuario y él me dé la misma funcionalidad va a tener las mismas validaciones giza pero cambia en el punto de la inserción hacia dónde va entonces al programador no le importa esto la mejora del programador no más le importa saber el nombre del método y no importa el tipo de objeto entonces en este caso como creó un objeto de estos 2 entonces vamos aquí y vamos a crear un tipo bebida embriagante o bebida es igualdad creador punto crea bebida y aquí simplemente va a poner creador punto quiero un vino tinto quiero una cerveza y vamos a poner line o de vida junto cuanto membrana por hora pero yo aquí al final yo sé que es una cerveza porque la cree pero la mejor el programador no sabe que esa que digamos algún de ley le pongo esta funcionalidad tomándome la constante y yo te hago un trabajo internamente sin que tú sepas que siempre se llama así aquí si cambian por la vinotinto para el programador esta parte sigue siendo invisible entonces vamos a corregir esto es factor y patrón de diseño muy sencillo que es para crear objetos 20 está medio 20 porque entró habiendo tinto por esto y ahora y ahora que vamos a cambiar por cerveza y aquí me va a dar lo que pusimos un 5 entonces la ventaja del patrón de diseño factor y miento de es que es escalable no sé si yo puedo agregar más bebidas a medel l por ejemplo agro más opciones son las constantes y es transparente para los que utilicen miguel l entonces estos factores mentos gracias por ver el vídeo en le me gusta compartan si alguien creen que les sirva y gracias hasta luego

Tags: , , , , , , , , , , , ,

3 Comments

  • Alexis Ponce says:

    Gracias buen video y me encanto el ejemplo jajaja.

  • Ema Julio says:

    UHHH muchas gracias jajaja jjusto estaba buscando y rezaba que hallas subido uno vos jajajajajja

  • Mauricio Ortiz says:

    Amigo, felicidades por los videos, están muy buenos. Pero me salta una duda con respecto al Factory Method. Se supone que este método en particular debería tener una interface común para las clases en concreto, luego la clase factory tendrá un método para fabricar. ???

Leave a Reply

Your email address will not be published. Required fields are marked *