Topp 10 Latvia-baserte programvareutviklingsselskaper
I vår nyeste artikkel kan du lese mer om Latvias beste programvareutviklingsselskaper og deres innovative løsninger. Oppdag hvordan disse teknologilederne kan bidra til å løfte virksomheten din.
Et designmønster er en konseptuell modell som hjelper deg med å løse designproblemer i ulike sammenhenger. Det er som en gjenbrukbar mal du kan bruke til å strukturere koden.
Under arbeidet med en prosjektNår du skal løse et problem, er det viktig å huske at du ikke ønsker å finne opp hjulet på nytt. Hvis en løsning på et problem har vist seg å være effektiv, kan du spare mye tid og hodebry ved å gjenbruke den. Når det gjelder systemarkitekturdilemmaer, har vi utviklet noen mønstre for å gjøre designprosessen enklere.
Et designmønster er en konseptuell modell som hjelper deg med å løse designproblemer i ulike sammenhenger. Det er som en gjenbrukbar mal du kan bruke til å strukturere kode. Designmønstre er veldokumenterte, velprøvde og allment kjente. Med andre ord, hvis du bruker et riktig designmønster, kan du være sikker på at andre designmønster-innsidere (aka kollegene dine) vil forstå ideene dine uten problemer.
Det strategiske designmønsteret:
definerer en familie av algoritmer,
implementerer hver av algoritmene som en separat enhet,
gjør at hver av algoritmene kan brukes om hverandre i en gitt sammenheng.
I en av appene våre har vi implementert noen strategier for autentisering av forespørsler. Vi tillater autentisering med informasjonskapsler, JWT-tokens og API-nøkler. For meg høres det ut som en familie av algoritmer.
Vi har delt inn vår familie av autentiseringsalgoritmer i tre separate klasser. Hver klasse definerer den konkrete oppførselen; det er her alle implementeringsdetaljene går:
modul AuthenticationStrategies
klasse CookiesAuthentication
def self.authenticate_request(forespørsel)
puts "Jeg implementerer en algoritme for cookie-autentisering"
end
end
klasse JWTAuthentication
def self.authenticate_request(forespørsel)
puts "Jeg implementerer en jwt-autentiseringsalgoritme"
end
end
klasse ApiKeyAuthentication
def self.authenticate_request(forespørsel)
puts "Jeg implementerer en api-nøkkelautentiseringsalgoritme"
end
end
end
Deretter har vi en kontekst/klient-klasse:
klasse Autentisering
def self.authenticate(autentiseringsstrategi, forespørsel)
authentication_strategy.authenticate_request(forespørsel)
end
end
request = "Jeg later som om jeg er en forespørsel"
Authentication.authenticate(AuthenticationStrategies::CookiesAuthentication, forespørsel)
Authentication.authenticate(AuthenticationStrategies::JWTAuthentication, forespørsel)
Authentication.authenticate(AuthenticationStrategies::ApiKeyAuthentication, forespørsel)
Skriptet ovenfor gir ut resultater:
Jeg implementerer en algoritme for cookie-autentisering Jeg implementerer en algoritme for jwt-autentisering Jeg implementerer en algoritme for api-nøkkelautentisering
designmønstre er nyttige verktøy for å løse arkitektoniske problemer,
kunnskap om designmønstre forbedrer kommunikasjonen om systemarkitektur med andre utviklere,
strategidesignmønsteret passer for deg som har en rekke algoritmer som kan brukes om hverandre i en gitt kontekst.