Proxy, dekoratør, adapter og bromønstre

1. Introduksjon

I denne artikkelen skal vi fokusere på strukturelle designmønstre i Java - og diskutere hva dette er og noen grunnleggende forskjeller mellom noen av dem.

2. Strukturelle designmønstre

I følge Gang Of Four (GoF) kan designmønstre klassifiseres i tre typer:

  1. Skapende
  2. Strukturell
  3. Atferdsmessig

Enkelt sagt handler strukturelle mønstre om sammensetningen av klasser og objekter. De gir forskjellige måter å bruke objektsammensetning og arv på for å skape litt abstraksjon.

3. Proxy-mønster

Med dette mønsteret, vi lager et mellomledd som fungerer som et grensesnitt til en annen ressurs, f.eks. en fil, en tilkobling. Denne sekundære tilgangen gir et surrogat for den virkelige komponenten og beskytter den mot den underliggende kompleksiteten.

For et detaljert eksempel på mønsteret, ta en titt på det dedikerte innlegget: Proxy-mønsteret i Java.

Viktige punkter for differensiering:

  • Proxyen har samme grensesnitt som objektet den inneholder referansen til, og den endrer ikke dataene på noen måte. det er i kontrast til adapter- og dekoratormønstre som endrer og dekorerer funksjonene til henholdsvis eksisterende forekomster
  • Proxyen har vanligvis informasjonen om det virkelige motivet på selve kompileringstidspunktet, mens dekoratør og adapter blir injisert ved kjøretid, og kun vet det faktiske objektets grensesnitt

4. Dekormønster

Dette mønsteret er nyttig for å forbedre oppførselen til et objekt. For en detaljert oversikt, ta en titt på den fokuserte opplæringen her: Decorator Pattern in Java

Viktige punkter for differensiering:

  • Selv om proxy- og dekoratormønstre har lignende strukturer, er de forskjellige i intensjon; Mens Proxy's primære formål er å lette brukervennlighet eller kontrollert tilgang, legger en dekoratør ytterligere ansvar
  • Både proxy- og adaptermønstre har en referanse til det opprinnelige objektet
  • Alle dekoratørene fra dette mønsteret kan brukes rekursivt, et uendelig antall ganger, noe som ikke er mulig med andre modeller

5. Adaptermønster

Adaptermønsteret brukes til å koble til to inkompatible grensesnitt som ellers ikke kan kobles direkte. En adapter bryter en eksisterende klasse med et nytt grensesnitt slik at den blir kompatibel med grensesnittet som trengs.

For en detaljert beskrivelse og implementering, ta en titt på det dedikerte innlegget: Adaptermønster i Java

Hovedforskjellene mellom adapter- og proxy-mønstre er:

  • Mens proxy har samme grensesnitt, gir Adapter et annet grensesnitt som er kompatibelt med klienten
  • Adaptermønster brukes etter at applikasjonskomponentene er designet slik at vi kan bruke dem uten å endre kildekoden. Dette er i motsetning til Bridge-mønsteret, som brukes før komponentene er designet.

6. Bromønster

Bridge-mønsteret brukes til å koble fra en abstraksjon fra implementeringen slik at de to kan variere uavhengig.

Dette betyr å lage et brogrensesnitt som bruker OOP-prinsipper for å skille ut ansvar i forskjellige abstrakte klasser.

For en detaljert beskrivelse og implementering, ta en titt på det dedikerte innlegget: Bridge Pattern i Java

Viktige punkter for differensiering:

  • Et bromønster kan bare implementeres før applikasjonen er designet.
  • Tillater at abstraksjon og implementering endres uavhengig, mens et adaptermønster gjør det mulig for inkompatible klasser å samarbeide

7. Konklusjon

I denne artikkelen fokuserte vi på strukturmønsteret og forskjeller mellom noen av typene.

Som alltid kan den fulle implementeringen av denne opplæringen finnes på Github.


$config[zx-auto] not found$config[zx-overlay] not found