Proxy, dekoratør, adapter og bromønstre

1. Introduktion

I denne artikel vil vi fokusere på strukturelle designmønstre i Java - og diskutere hvad disse er og nogle grundlæggende forskelle mellem nogle af dem.

2. Strukturelle designmønstre

Ifølge Gang Of Four (GoF) kan designmønstre klassificeres i tre typer:

  1. Skabende
  2. Strukturel
  3. Adfærdsmæssig

Kort sagt, strukturelle mønstre beskæftiger sig med sammensætningen af ​​klasser og objekter. De giver forskellige måder at bruge objektsammensætning og arv til at skabe en abstraktion.

3. Proxy-mønster

Med dette mønster, vi opretter en formidler, der fungerer som grænseflade til en anden ressourcef.eks. en fil, en forbindelse. Denne sekundære adgang giver et surrogat for den virkelige komponent og beskytter den mod den underliggende kompleksitet.

For et detaljeret eksempel på mønsteret, se på det dedikerede indlæg: Proxy-mønsteret i Java.

Nøglepunkter for differentiering:

  • Proxyen har den samme grænseflade som det objekt, den indeholder referencen til, og den ændrer ikke dataene på nogen måde; det er i modsætning til adapter- og dekoratørmønstre, der ændrer og dekorerer funktionerne i henholdsvis allerede eksisterende forekomster
  • Proxyen har normalt oplysningerne om det rigtige motiv på selve kompileringstidspunktet, mens dekoratør og adapter bliver injiceret ved kørsel, idet de kun kender det faktiske objekts interface

4. Dekoratørmønster

Dette mønster er nyttigt til at forbedre et objekts opførsel. For en detaljeret oversigt, se på den fokuserede vejledning her: Decorator Pattern i Java

Nøglepunkter for differentiering:

  • Selvom proxy- og dekoratormønstre har lignende strukturer, er de forskellige i intentioner; mens Proxy's primære formål er at lette brugervenlighed eller kontrolleret adgang, tillægger en dekoratør yderligere ansvar
  • Både Proxy- og Adapter-mønstre indeholder en henvisning til det originale objekt
  • Alle dekoratører fra dette mønster kan bruges rekursivt, et uendeligt antal gange, hvilket ikke er muligt med andre modeller

5. Adaptermønster

Adaptermønsteret bruges til at forbinde to inkompatible grænseflader, som ellers ikke kan forbindes direkte. En adapter indpakker en eksisterende klasse med en ny grænseflade, så den bliver kompatibel med den nødvendige grænseflade.

For en detaljeret beskrivelse og implementering, se på det dedikerede indlæg: Adaptermønster i Java

De vigtigste forskelle mellem adapter og proxy mønstre er:

  • Mens proxy har den samme grænseflade, giver Adapter en anden grænseflade, der er kompatibel med dens klient
  • Adaptermønster bruges, efter at applikationskomponenterne er designet, så vi kan bruge dem uden at ændre kildekoden. Dette er i modsætning til Bridge-mønsteret, som bruges inden komponenterne er designet.

6. Bromønster

Bridge-mønsteret bruges til at afkoble en abstraktion fra dets implementering så de to kan variere uafhængigt.

Dette betyder at skabe en brogrænseflade, der bruger OOP-principper til at adskille ansvar i forskellige abstrakte klasser.

For en detaljeret beskrivelse og implementering, se på det dedikerede indlæg: Bridge Pattern i Java

Nøglepunkter for differentiering:

  • Et bromønster kan kun implementeres, før applikationen er designet.
  • Tillader, at en abstraktion og implementering kan ændres uafhængigt, mens et adaptermønster gør det muligt for uforenelige klasser at arbejde sammen

7. Konklusion

I denne artikel fokuserede vi på det strukturelle designmønster og forskelle mellem nogle af dets typer.

Som altid kan den fulde implementering af denne vejledning findes på Github.


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