Los 6 patrones de diseño más utilizados
TRANSCRIPCIÓN COMPLETA
En ingeniería de software, los patrones
de diseño son una solución general y
reutilizable para problemas comunes que
ocurren en un determinado contexto
cuando nos encontramos diseñando
aplicaciones. Estas no son una solución
final que luego se transforma en código
fuente, sino que son una descripción o
plantilla que puedes utilizar tú en
determinado momento.
[Música]
Hola mundo y bienvenidos a este video.
Los patrones de diseño son la
formalización de buenas prácticas que un
ingeniero de software puede utilizar
para resolver problemas comunes. En
programación orientada a objetos, los
patrones de diseño, por lo general
muestran relaciones e interacciones
sobre los distintos objetos y clases,
aunque patrones que impliquen
mutabilidad no son útiles cuando se está
utilizando un paradigma funcional
estricto. Algunos patrones podrían ser
hasta catalogados de innecesarios o
inútiles dependiendo del paradigma,
lenguaje o librerías que estemos
utilizando, ya que estos ya podrían
tener soluciones específicas para poder
resolver esos problemas. En este video
nosotros veremos seis patrones de
diseño, pero no debes pensar de que
estos son balas de plata, ya que
utilizar alguno de estos patrones podría
ser una pésima idea dependiendo de tu
contexto. Pero antes de mencionarte los
seis patrones de diseño y qué problemas
estos resuelven, tengo que decirte que
el botón de me gusta acaba de escribir
código espaghetti. Y esta es una pésima
práctica en el desarrollo de software,
por lo que para que ese maldito aprenda
que no debe seguir escribiendo código
espaghetti, debes golpearlo un número
par de veces hasta que quede en azul.
Cuando el botón de me gusta quede en
azul, él habrá aprendido que ya no debe
seguir escribiendo código espaguagetti.
Y si golpeas el botón de me gusta, harás
que nuestra comunidad de desarrollo sea
muchísimo mejor, ya que el botón de me
gusta se habrá encaminado en escribir
código de mejor calidad. Y ya que ese
maldito está en azul, continuamos con
nuestro video. En ingeniería de
software, el patrón Singleton restringe
la instanciación de una clase a solo una
única instancia. Esto es útil cuando
necesitas solo una instancia de una
clase para poder coordinar acciones
entre distintos sistemas. Si tu sistema
solo tiene una base de datos, singleton.
Si tienes solo una API, singleton. Si
tienes que conectarte con un servicio
como AWS y solo con una instancia de
este, Singleton. Dependiendo del
lenguaje podría ser que no necesites
implementar una clase de singleton. En
Node JS puedes implementar un objeto
literal y exportarlo. Esto se comportará
igual que un singleton, ya que el motor
de Node tiene implementado un caché con
las variables exportadas, por lo que
siempre será la misma. Pero en caso de
Java, que tiene una implementación más
estricta, debe implementarse de la
siguiente manera. Primero se crea la
clase. Luego defines una propiedad
llamada Singleton, la cual tendrá la
instancia que creamos. Luego definimos
un constructor llamado Singleton. Ese
constructor se encargará de construir el
objeto que vamos a necesitar en un
futuro. Luego creamos un método llamado
get instance, que se encargará de
devolver la instancia de nuestro
singleton. En programación orientada a
objetos, el patrón decorador es un
patrón que permite agregar
funcionalidades a un objeto sin alterar
el comportamiento de otras instancias de
objetos de la misma clase. Soluciona el
problema de agregar o quitar
responsabilidades a un objeto en el
rantime y es una alternativa flexible a
las subclases. Y una implementación en
Java se vería algo más o menos así. Si
vamos a vender café, vamos a necesitar
saber el precio de este y también vamos
a necesitar saber sus ingredientes, que
claro, el café tiene café, pero
podríamos querer vender también café con
leche. Y en lugar de crear una nueva
clase y reimplementar los métodos, lo
mejor sería tomar la tasa que ya existe
y pasarla por el constructor a una clase
con leche. Esta clase crea métodos con
los mismos nombres, pero llama primero a
los métodos del objeto café. Y cuando
alguien solicite el precio, agregamos el
valor de la leche. Y cuando alguien
solicite los ingredientes, agregamos
también como ingrediente la leche.
En ingeniería de software, el patrón
mediador define un objeto, el cual
encapsula cómo otros objetos van a
interactuar. Este patrón se considera un
patrón de comportamiento, ya que puede
alterar cómo se ejecuta la aplicación.
Un patrón mediador en JavaScript definir
de la siguiente manera. Primero,
definimos un ifi, que significa
inmediate invoked expression. A esta le
agregamos una variable, la que contendrá
los eventos que pueden despacharse o
escucharse. Seguido, creamos una función
llamada subscribe. Esta se encargará de
recibir el evento y también la función
que se ejecutará. Esta debe quedar
registrada en nuestra variable de
eventos. Después creamos una función
llamada dispatch. Esta recibirá el
evento que se está despachando y también
la data que se le pasará como argumento
a la función que suscribiremos. Esta
función recorrerá todos los eventos que
se encuentran registrados y de encontrar
uno o más de uno, ejecutará las
funciones y pasará los datos a cada una
de estas. Luego retornamos estas
funciones y con eso ya construimos
nuestro mediador. La diferencia entre un
mediador y un observador es que el
mediador necesita un objeto aparte
encargado de manejar las comunicaciones
entre todos los objetos, mientras que el
observador modifica el objeto que tiene
que escuchar. El patrón observador no
tiene este intermediario. Redux
implementa el patrón mediador. En
ingeniería de software, el patrón
adaptador permite que un objeto que no
está diseñado para funcionar con una
interfaz sea modificado para que este sí
pueda funcionar con esta. En Python
podemos definir un patrón adaptador
creando dos clases. Primero, creamos una
clase Android y una clase iPhone.
Android se recarga con USB y iPhone se
recarga con Lightning. Puedo crear una
clase cargador que reciba el teléfono
que tiene que cargar, pero este solo
funcionaría con USB. Por lo que para que
el iPhone se pueda cargar, puedo crear
una clase iPhone adapter que reciba el
iPhone y que cuando se llame a su método
para cargar el teléfono con USB, que
este lo cargue con Lightning. De esta
manera, este iPhone adaptado podría
utilizarse con el cargador de Android.
El patrón MBC o también conocido como
Model View Controller se utiliza
comúnmente para desarrollar interfaces
de usuario dividiendo la lógica en tres
elementos interconectados. El modelo, el
cual contiene la lógica de tu
aplicación, se encargará de llamar a los
distintos datos y contiene las reglas de
negocio. La vista es la representación
visual de los datos que se recolectan.
Esto es lo que verá el usuario y el
controlador. Se encarga de recibir los
datos, transformarlos en algo útil para
el modelo, recibe los datos del modelo y
luego construye la respuesta para el
usuario. Un ejemplo de MBC se puede ver
fácilmente en Node js con Express, donde
creamos un endpo encargado de recibir
las peticiones de nuestro usuario. Con
esa petición vamos a buscar los datos
que este necesita. Luego los devolvemos
al usuario estos datos y por supuesto
manejamos las excepciones en el caso que
estas existan. Si existe un HTML lo
renderizamos con los datos que
recolectamos, pero en este caso
devolvemos los datos como si fuese una
API Rest, por lo que nuestra vista entre
comillas en este caso es un Jason. El
patrón Flux fue desarrollado por
DESBLOQUEAR MÁS
Regístrate gratis para acceder a funciones premium
VISOR INTERACTIVO
Mira el video con subtítulos sincronizados, superposición ajustable y control total de la reproducción.
RESUMEN DE IA
Obtén un resumen instantáneo generado por IA del contenido del video, los puntos clave y las conclusiones.
TRADUCIR
Traduce la transcripción a más de 100 idiomas con un solo clic. Descarga en cualquier formato.
MAPA MENTAL
Visualiza la transcripción como un mapa mental interactivo. Comprende la estructura de un vistazo.
CHATEA CON LA TRANSCRIPCIÓN
Haz preguntas sobre el contenido del video. Obtén respuestas impulsadas por IA directamente desde la transcripción.
SACA MÁS PARTIDO A TUS TRANSCRIPCIONES
Regístrate gratis y desbloquea el visor interactivo, los resúmenes de IA, las traducciones, los mapas mentales y mucho más. No se requiere tarjeta de crédito.