Questa è la strategia! Modello di progettazione della strategia
Sara Klimek
Un modello di progettazione è un modello concettuale che aiuta a risolvere i problemi di progettazione in vari contesti. È come un modello riutilizzabile che si può applicare alla strutturazione del codice.
Mentre lavorava su un progettoÈ fondamentale ricordare che non si vuole reinventare la ruota. Se una soluzione per un problema si è dimostrata efficace, riutilizzarla vi farà risparmiare tonnellate di tempo e qualche grattacapo. In caso di dilemmi sull'architettura del sistema, abbiamo sviluppato alcuni modelli per facilitare il processo di progettazione.
Che cos'è un modello di progettazione?
Un design pattern è un modello concettuale che aiuta a risolvere i problemi di progettazione in vari contesti. È come un modello riutilizzabile che si può applicare a una strutturazione codice. Il fatto è che i design pattern sono ben documentati, ben collaudati e comunemente conosciuti. In altre parole, utilizzate un design pattern appropriato e sarete certi che gli altri addetti ai lavori (ovvero i vostri colleghi) capiranno senza problemi le vostre idee.
Desiderosi di imparare? Ecco il modello di progettazione della strategia.
Il modello di progettazione della strategia:
definisce una famiglia di algoritmi,
implementa ogni algoritmo come entità separata,
consente di utilizzare ciascuno degli algoritmi in modo intercambiabile in un determinato contesto.
Esempio di vita reale? L'autenticazione
In una delle nostre applicazioni abbiamo implementato alcune strategie per l'autenticazione delle richieste. Consentiamo l'autenticazione con cookie, token JWT e chiavi API. A me sembra una famiglia di algoritmi.
Vediamo un esempio di implementazione.
La nostra famiglia di algoritmi di autenticazione è divisa in tre classi separate. Ogni classe definisce il comportamento concreto; è il luogo in cui si trovano tutti i dettagli dell'implementazione:
modulo Strategie di autenticazione
classe CookiesAuthentication
def self.authenticate_request(request)
puts "Ho implementato un algoritmo di autenticazione dei cookie".
fine
fine
classe JWTAuthentication
def self.authenticate_request(request)
puts "Implemento un algoritmo di autenticazione JWT".
fine
fine
classe ApiKeyAuthentication
def self.authenticate_request(request)
puts "Ho implementato un algoritmo di autenticazione con chiave api".
fine
fine
fine
Poi, abbiamo una classe contesto/cliente:
classe Autenticazione
def self.authenticate(authentication_strategy, request)
authentication_strategy.authenticate_request(request)
fine
fine
richiesta = "Faccio finta di essere una richiesta".
Implemento un algoritmo di autenticazione a cookie Implemento un algoritmo di autenticazione jwt Implemento un algoritmo di autenticazione a chiave api
Riassumendo
I design pattern sono strumenti utili per risolvere i problemi architettonici,
la conoscenza dei design pattern migliora la comunicazione sull'architettura del sistema con gli altri sviluppatori,
Lo Strategy Design Pattern è adatto alle vostre esigenze se avete un gruppo di algoritmi che possono essere utilizzati in modo intercambiabile in un determinato contesto.