window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versjon: 2, } ;(function () { var w = vindu if (w.LeadBooster) { console.warn('LeadBooster finnes allerede') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Det er strategien! Strategisk designmønster - The Codest
The Codest
  • Om oss
  • Tjenester
    • Programvareutvikling
      • Frontend-utvikling
      • Backend-utvikling
    • Staff Augmentation
      • Frontend-utviklere
      • Backend-utviklere
      • Dataingeniører
      • Ingeniører i skyen
      • QA-ingeniører
      • Annet
    • Det rådgivende
      • Revisjon og rådgivning
  • Industrier
    • Fintech og bankvirksomhet
    • E-commerce
    • Adtech
    • Helseteknologi
    • Produksjon
    • Logistikk
    • Bilindustrien
    • IOT
  • Verdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leveransesjef
  • Vårt team
  • Casestudier
  • Vet hvordan
    • Blogg
    • Møter
    • Webinarer
    • Ressurser
Karriere Ta kontakt med oss
  • Om oss
  • Tjenester
    • Programvareutvikling
      • Frontend-utvikling
      • Backend-utvikling
    • Staff Augmentation
      • Frontend-utviklere
      • Backend-utviklere
      • Dataingeniører
      • Ingeniører i skyen
      • QA-ingeniører
      • Annet
    • Det rådgivende
      • Revisjon og rådgivning
  • Verdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leveransesjef
  • Vårt team
  • Casestudier
  • Vet hvordan
    • Blogg
    • Møter
    • Webinarer
    • Ressurser
Karriere Ta kontakt med oss
Pil tilbake GÅ TILBAKE
2018-12-18
Programvareutvikling

Det er strategien! Strategisk designmønster

Sara Klimek

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.

Hva er et designmønster?

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 på en strukturerende kode. Saken er at 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.

Ivrig etter å lære? Her kommer strategidesignmønsteret.

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.

Et eksempel fra det virkelige liv? Autentisering

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.

La oss ta en titt på et eksempel på en implementering.

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

Oppsummering

  • 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.

Relaterte artikler

Programvareutvikling

Bygg fremtidssikre webapper: Innsikt fra The Codests ekspertteam

Oppdag hvordan The Codest utmerker seg når det gjelder å skape skalerbare, interaktive webapplikasjoner med banebrytende teknologi som gir sømløse brukeropplevelser på tvers av alle plattformer. Finn ut hvordan ekspertisen vår driver digital transformasjon og...

THECODEST
Programvareutvikling

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.

thecodest
Løsninger for bedrifter og oppskalering

Grunnleggende om Java-programvareutvikling: En guide til vellykket outsourcing

Utforsk denne viktige veiledningen om vellykket outsourcing av Java-programvareutvikling for å øke effektiviteten, få tilgang til ekspertise og drive frem prosjektsuksess med The Codest.

thecodest
Programvareutvikling

Den ultimate guiden til outsourcing i Polen

Den kraftige økningen i outsourcing i Polen er drevet av økonomiske, utdanningsmessige og teknologiske fremskritt, noe som fremmer IT-vekst og et forretningsvennlig klima.

TheCodest
Løsninger for bedrifter og oppskalering

Den komplette guiden til verktøy og teknikker for IT-revisjon

IT-revisjoner sørger for sikre, effektive og kompatible systemer. Les hele artikkelen for å lære mer om viktigheten av dem.

The Codest
Jakub Jakubowicz CTO og medgrunnlegger

Abonner på vår kunnskapsbase og hold deg oppdatert på ekspertisen fra IT-sektoren.

    Om oss

    The Codest - Internasjonalt programvareutviklingsselskap med teknologisentre i Polen.

    Storbritannia - Hovedkvarter

    • Kontor 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale teknologisentre

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      The Codest

    • Hjem
    • Om oss
    • Tjenester
    • Casestudier
    • Vet hvordan
    • Karriere
    • Ordbok

      Tjenester

    • Det rådgivende
    • Programvareutvikling
    • Backend-utvikling
    • Frontend-utvikling
    • Staff Augmentation
    • Backend-utviklere
    • Ingeniører i skyen
    • Dataingeniører
    • Annet
    • QA-ingeniører

      Ressurser

    • Fakta og myter om samarbeid med en ekstern programvareutviklingspartner
    • Fra USA til Europa: Hvorfor velger amerikanske oppstartsbedrifter å flytte til Europa?
    • Sammenligning av Tech Offshore Development Hubs: Tech Offshore Europa (Polen), ASEAN (Filippinene), Eurasia (Tyrkia)
    • Hva er de største utfordringene for CTO-er og CIO-er?
    • The Codest
    • The Codest
    • The Codest
    • Retningslinjer for personver
    • Vilkår for bruk av nettstedet

    Opphavsrett © 2025 av The Codest. Alle rettigheter forbeholdt.

    nb_NONorwegian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek nb_NONorwegian