Así es la estrategia Patrón de diseño de la estrategia
Sara Klimek
Un patrón de diseño es un modelo conceptual que te ayuda a resolver problemas de diseño en diversos contextos. Es como una plantilla reutilizable que puedes aplicar a un código de estructuración.
Mientras trabajaba en un proyectoEn cualquier caso, es fundamental recordar que no se trata de reinventar la rueda. Si una solución para un problema ha demostrado su eficacia, reutilizarla le ahorrará mucho tiempo y algunos quebraderos de cabeza. En caso de dilemas de arquitectura de sistemas, hemos desarrollado algunos patrones para facilitar el proceso de diseño.
¿Qué es un patrón de diseño?
Un patrón de diseño es un modelo conceptual que ayuda a resolver problemas de diseño en diversos contextos. Es como una plantilla reutilizable que puedes aplicar a una estructuración código. La cuestión es que los patrones de diseño están bien documentados, probados y son comúnmente conocidos. En otras palabras, utiliza un patrón de diseño adecuado y ten por seguro que otros expertos en patrones de diseño (es decir, tus compañeros de trabajo) entenderán tus ideas sin problemas.
¿Quieres aprender? Aquí viene el Patrón de Diseño de Estrategias.
El patrón de diseño de estrategias:
define una familia de algoritmos,
implementa cada uno de los algoritmos como una entidad independiente,
permite utilizar indistintamente cada uno de los algoritmos en un contexto determinado.
¿Ejemplo de la vida real? Autenticación
En una de nuestras aplicaciones hemos implementado algunas estrategias para autenticar peticiones. Permitimos la autenticación con cookies, tokens JWT y claves API. A mí me parece una familia de algoritmos.
Veamos un ejemplo de aplicación.
Tenemos nuestra familia de algoritmos de autenticación dividida en tres clases separadas. Cada clase define el comportamiento concreto; es donde van todos los detalles de implementación:
módulo AuthenticationStrategies
clase CookiesAutenticación
def self.authenticate_request(request)
puts "Implemento un algoritmo de autenticación de cookies"
end
end
clase JWTAuthentication
def self.authenticate_request(request)
puts "Implemento un algoritmo de autenticación jwt"
end
end
clase ApiKeyAuthentication
def self.authenticate_request(request)
puts "Implemento un algoritmo de autenticación de clave api"
end
end
end
Luego, tenemos una clase contexto/cliente:
clase Autenticación
def self.authenticate(estrategia_de_autenticación, solicitud)
authentication_strategy.authenticate_request(request)
end
fin
Implemento un algoritmo de autenticación cookie Implemento un algoritmo de autenticación jwt Implemento un algoritmo de autenticación api key
Resumiendo
Los patrones de diseño son herramientas útiles para resolver problemas de arquitectura,
El conocimiento de los patrones de diseño mejora la comunicación sobre la arquitectura del sistema con otros desarrolladores,
el patrón de diseño de estrategia se adapta a sus necesidades si tiene un montón de algoritmos que pueden utilizarse indistintamente en un contexto determinado.