Essa é a estratégia! Padrão de desenho da estratégia
Sara Klimek
Um padrão de conceção é um modelo concetual que o ajuda a resolver problemas de conceção em vários contextos. É como um modelo reutilizável que se pode aplicar a um código estruturante.
Enquanto trabalhava num projetoSe uma solução para um problema for comprovadamente eficaz, a sua reutilização poupará muito tempo e algumas dores de cabeça. Se uma solução para um problema for comprovadamente eficaz, a sua reutilização poupar-lhe-á imenso tempo e algumas dores de cabeça. No caso de dilemas de arquitetura de sistemas, desenvolvemos alguns padrões para facilitar o processo de conceção.
O que é um padrão de conceção?
Um padrão de conceção é um modelo concetual que o ajuda a resolver problemas de conceção em vários contextos. É como um modelo reutilizável que se pode aplicar a uma estruturação código. O que acontece é que os padrões de desenho estão bem documentados, bem comprovados e são vulgarmente conhecidos. Por outras palavras, utilize um padrão de desenho adequado e tenha a certeza de que os outros especialistas em padrões de desenho (também conhecidos como os seus colegas de trabalho) vão apanhar o jeito das suas ideias sem problemas.
Ansioso por aprender? Aqui está o Padrão de Design de Estratégia.
O padrão de conceção da estratégia:
define uma família de algoritmos,
implementa cada um dos algoritmos como uma entidade separada,
permite que cada um dos algoritmos seja utilizado indistintamente num determinado contexto.
Exemplo da vida real? Autenticação
Numa das nossas aplicações, implementámos algumas estratégias para autenticar pedidos. Permitimos a autenticação com cookies, tokens JWT e chaves de API. Parece-me uma família de algoritmos.
Vejamos um exemplo de implementação.
Temos a nossa família de algoritmos de autenticação dividida em três classes distintas. Cada classe define o comportamento concreto; é para ela que vão todos os pormenores de implementação:
módulo AuthenticationStrategies
classe CookiesAuthentication
def self.authenticate_request(request)
puts "Eu implemento um algoritmo de autenticação de cookies"
end
fim
classe JWTAuthentication
def self.authenticate_request(request)
puts "Eu implemento um algoritmo de autenticação jwt"
end
fim
classe ApiKeyAuthentication
def self.authenticate_request(request)
puts "Eu implemento um algoritmo de autenticação de chave de API"
end
fim
fim
Depois, temos uma classe de contexto/cliente:
classe Autenticação
def self.authenticate(authentication_strategy, request)
authentication_strategy.authenticate_request(request)
fim
fim
Eu implemento um algoritmo de autenticação de cookies Eu implemento um algoritmo de autenticação jwt Eu implemento um algoritmo de autenticação de chave de API
Resumindo
os padrões de conceção são ferramentas úteis para resolver problemas de arquitetura,
o conhecimento dos padrões de conceção melhora a comunicação sobre a arquitetura do sistema com outros programadores,
O padrão de desenho de estratégia é adequado às suas necessidades se tiver um conjunto de algoritmos que podem ser utilizados indistintamente num determinado contexto.