Ett designmönster är en konceptuell modell som hjälper dig att lösa designproblem i olika sammanhang. Det är som en återanvändbar mall som du kan använda för att strukturera kod.
Under arbetet med en projektDet är viktigt att komma ihåg att man inte vill uppfinna hjulet på nytt. Om en lösning på ett problem har visat sig vara effektiv kan du spara massor av tid och en del huvudvärk genom att återanvända den. När det gäller systemarkitekturdilemman har vi utvecklat några mönster för att underlätta en designprocess.
Vad är ett designmönster?
Ett designmönster är en konceptuell modell som hjälper dig att lösa designproblem i olika sammanhang. Det är som en återanvändbar mall som du kan använda för att strukturera kod. Saken är den att designmönster är väldokumenterade, väl beprövade och allmänt kända. Med andra ord, använd ett korrekt designmönster och var säker på att andra designmönsterinsiders (aka dina kollegor) kommer att förstå dina idéer smidigt.
Vill du lära dig mer? Här kommer det strategiska designmönstret.
Det strategiska designmönstret:
definierar en familj av algoritmer,
implementerar var och en av algoritmerna som en separat enhet,
gör att var och en av algoritmerna kan användas omväxlande i ett visst sammanhang.
Exempel från verkliga livet? Autentisering
I en av våra appar har vi implementerat några strategier för att autentisera förfrågningar. Vi tillåter autentisering med cookies, JWT-tokens och API-nycklar. Låter som en familj av algoritmer för mig.
Låt oss ta en titt på ett exempel på en implementering.
Vi har delat in vår familj av autentiseringsalgoritmer i tre separata klasser. Varje klass definierar det konkreta beteendet; det är där alla implementeringsdetaljer hamnar:
modul AuthenticationStrategies
klass CookiesAutenticering
def self.authenticate_request(begäran)
puts "Jag implementerar en cookie-autentiseringsalgoritm"
slut
slut
klass JWTAutentication
def self.authenticate_request(begäran)
puts "Jag implementerar en jwt-autentiseringsalgoritm"
slut
slut
klass ApiKeyAuthentication
def self.authenticate_request(begäran)
puts "Jag implementerar en algoritm för autentisering av api-nyckel"
slut
slut
slut
Sedan har vi en context/client-klass:
klass Autentisering
def self.authenticate(autentiseringsstrategi, begäran)
authentication_strategy.authenticate_request(begäran)
slut
slut
Jag implementerar en cookie-autentiseringsalgoritm Jag implementerar en jwt-autentiseringsalgoritm Jag implementerar en api-nyckelautentiseringsalgoritm
Sammanfattningsvis
designmönster är användbara verktyg för att lösa arkitektoniska problem,
kunskap om designmönster förbättrar kommunikationen om systemarkitektur med andra utvecklare,
Strategy Design Pattern passar dig som har ett antal algoritmer som kan användas på olika sätt i ett visst sammanhang.