CodeGym/Java kursus/Modul 3/Generative mønstre, del 2

Generative mønstre, del 2

Ledig

4.1 Bygmester

Builder er et generativt designmønster, der giver en måde at skabe et sammensat objekt på.

Adskiller konstruktionen af ​​et komplekst objekt fra dets repræsentation, så den samme konstruktionsproces kan resultere i forskellige repræsentationer.

Bygger

Styrker:

  • giver dig mulighed for at ændre den interne repræsentation af produktet;
  • isolerer koden, der implementerer konstruktion og præsentation;
  • giver bedre kontrol over designprocessen.

Svage sider:

  • Algoritmen til at skabe et komplekst objekt bør ikke afhænge af, hvilke dele objektet består af, og hvordan de passer sammen;
  • byggeprocessen skal give forskellige repræsentationer af det objekt, der konstrueres.

Et godt eksempel er klassen HttpRequest, som har en underklasse HttpRequest.Builder, der kan bruges til at oprette forekomster af klassen HttpRequest og sikre, at de er gyldige.

4.2 Doven initialisering

Doven initialisering er en programmeringsteknik, når en eller anden ressourcekrævende operation (genstandsskabelse, værdiberegning) udføres umiddelbart før resultatet bruges.

Initialisering udføres således "on demand" og ikke på forhånd. En lignende idé finder anvendelse på en række områder: for eksempel on-the-fly kompilering og Just-in-Time logistikkonceptet.

Doven initialisering

Et særligt tilfælde af doven initialisering - at skabe et objekt på tidspunktet for adgang til det - er et af de generative designmønstre. Det bruges typisk i forbindelse med mønstre som Factory Method, Loner og Proxy.

Styrker:

  • Initialisering udføres kun, når det virkelig er nødvendigt;
  • Den indledende initialisering af applikationen accelereres: alt, der kan udskydes, udskydes.

Svage sider:

  • Det er ikke muligt eksplicit at angive den rækkefølge, som objekter initialiseres i;
  • Der er en forsinkelse ved første adgang til objektet, hvilket kan være kritisk, når en anden ressourcekrævende operation udføres parallelt. På grund af dette er det nødvendigt nøje at overveje hensigtsmæssigheden af ​​at bruge doven initialisering i multitrådede softwaresystemer.

Husk, hvordan du, når du skrev web.xml, kunne angive startrækkefølgen for servlets der? Dette er netop resultatet af doven indlæsning. Tomcat vil oprette servlet-objekter første gang, de tilgås.

4.3 Objektpulje

En objektpulje er et overordnet designmønster, et sæt initialiserede og klar til brug objekter. Når systemet har brug for et objekt, bliver det ikke oprettet, men taget fra poolen. Når en genstand ikke længere er nødvendig, bliver den ikke ødelagt, men returneret til poolen.

objektpulje

Objektpooling bruges til at forbedre ydeevnen, når du opretter et objekt i starten af ​​et job, og det er dyrt at ødelægge det i slutningen. Ydeevneforbedringen er især mærkbar, når objekter oprettes og ødelægges ofte, men kun et lille antal af dem eksisterer på samme tid.

En objektpulje er nyttig, når et objekt ejer andre ressourcer end hukommelse, såsom netværkssockets. Eller hvis samlingen af ​​objekter fylder en væsentlig del af computerens hukommelse, og der skabes en masse "skrald".

Som du husker, udfører Tomcat hver anmodning i en separat tråd. Men tråde oprettes ikke hver gang på ny, men gemmes i trådpuljen. Dette muliggør hurtigere eksekvering af anmodninger: Når en tråd er nødvendig, tages den blot fra puljen. Spørgsmålet er i øvrigt: hvordan ville du sætte den løbende tråd ned i poolen og tage den fra poolen?

1
Opgave
Modul 3,  niveaulektie
Låst
All moves are recorded
task4110
1
Opgave
Modul 3,  niveaulektie
Låst
Lazy Proxy
task4111
1
Opgave
Modul 3,  niveaulektie
Låst
Rolling the Ball
task4112
Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu