CodeGym/Java kursus/Modul 3/Adfærdsmønstre, del 2

Adfærdsmønstre, del 2

Ledig

2.1 Tilstand

Tilstand er et adfærdsdesignmønster. Det bruges i de tilfælde, hvor objektet under afviklingen af ​​programmet skal ændre sin adfærd afhængigt af dets tilstand.

Stat

Mønsteret består af 3 blokke:

Kontekst er en klasse, hvis objekter skal ændre deres adfærd afhængigt af tilstanden.

Stat er grænsefladen, som hver af de konkrete stater skal implementere. Gennem denne grænseflade interagerer kontekstobjektet med staten ved at uddelegere metodekald til det. Grænsefladen skal indeholde midler til feedback til det objekt, hvis adfærd skal ændres.

Til dette bruges en begivenhed (mønster Publisher - Subscriber). Dette er nødvendigt for at erstatte tilstandsobjektet under afviklingen af ​​programmet, når hændelser opstår. Der kan være tilfælde, hvor konteksten selv med jævne mellemrum spørger tilstandsobjektet til en overgang.

ConcreteState1, ConcreteState2 - klasser af konkrete tilstande. Skal indeholde information om under hvilke forhold og i hvilke tilstande objektet kan passere fra den aktuelle tilstand. For eksempel, fra ConcreteState1 kan et objekt gå til ConcreteState2 og ConcreteState3, og fra ConcreteState2 tilbage til ConcreteState1, og så videre. Objektet for en af ​​dem skal indeholde konteksten, når det oprettes.

For eksempel skriver du et spil, hvor en karakter kan løbe, svømme og flyve. Hvis din karakter kom i vandet, så er det rimeligt at begrænse hans adfærd i vandet: nu kan han ikke skyde, men han har stadig nogle handlinger: svøm fremad, højre, venstre osv.

Din karakters tilstand kan beskrives af et State-objekt, som har metoder, der kan kaldes, og som vil gøre noget. Og efter din karakter er kommet i vandet, ændrer du bare referencen til et andet statsobjekt inde i det - og det ændrer sin tilstand.

2.2 strategi

Strategi er et adfærdsdesignmønster til at definere en familie af algoritmer, indkapsle hver enkelt og gøre dem udskiftelige. Dette giver dig mulighed for at vælge en algoritme ved at definere den passende klasse.

Strategimønsteret giver dig mulighed for at ændre den valgte algoritme uanset de klientobjekter, der bruger den.

Strategi

Strategimønsteret giver dig mulighed for at bruge forskellige forretningsregler eller algoritmer afhængigt af konteksten. Det bruges i tilfælde, hvor forskellige algoritmer skal bruges på samme sted afhængigt af systemets (eller dets miljø) aktuelle tilstand.

Styrker:

  • indkapsling af implementeringen af ​​forskellige algoritmer, systemet bliver uafhængigt af mulige ændringer i forretningsregler;
  • kalder alle algoritmer på én standard måde;
  • ikke bruger switches og/eller betingede erklæringer.

Dette mønster minder lidt om Statsmønsteret, men her lægges vægten ikke på staten, men på adfærden. Lad os sige, at en karakter i dit spil kan skifte våben. Når du så skifter våben, kan du blot ændre referencen til det objekt, der beskriver, hvordan dette våben fungerer.

2.3 Skabelonmetode

Skabelonmetode

Abstrakt klasse (abstrakt klasse) - definerer de abstrakte operationer, der erstattes i arvingerne for at implementere trinene i algoritmen; implementerer en skabelonmetode, der definerer skelettet af algoritmen. Skabelonmetoden kalder de erstattede og andre operationer, der er defineret i klassen Abstract.

Betonklasse (betonklasse) - implementerer de erstattede operationer på den måde, der er nødvendig for implementering. Klassen Concrete antager, at algoritmens invariante trin vil blive udført i AbstractClass.

Dette mønster bruges ofte efter behov:

  • Enkelt brug af den invariante del af algoritmen, efterlader den skiftende del efter arvingernes skøn.
  • Lokalisering og isolering af kode, der er fælles for flere klasser, for at undgå duplikering.
  • Tillad kun arvinger at udvide koden visse steder.

Ja, dette mønster beskriver brugen af ​​et par: en abstrakt klasse og dens implementering.

2.4 Ansvarskæde

Ansvarskæde er et adfærdsdesignmønster designet til at organisere ansvarsniveauer i et system.

Ansvarskæde

Skabelonen anbefales til brug under forhold, hvor:

  • i det udviklede system er der en gruppe af objekter, der kan behandle beskeder af en bestemt type;
  • alle meddelelser skal behandles af mindst ét ​​systemobjekt;
  • beskeder i systemet behandles i henhold til ordningen "behandle det selv eller videregive det til en anden", det vil sige, at nogle beskeder behandles på det niveau, hvor de blev modtaget, mens andre videresendes til objekter på et andet niveau.

2.5 Memento

Keeper (Memento) er et adfærdsdesignmønster, der giver dig mulighed for at rette og gemme den interne tilstand af et objekt uden at krænke indkapslingen, så det kan gendannes til denne tilstand senere.

Guardian (minde)

Guardian-mønsteret bruges når:

  • det er nødvendigt at gemme et øjebliksbillede af objektets (eller en del af det) tilstand til efterfølgende restaurering;
  • Den direkte grænseflade til at få et objekts tilstand afslører implementeringsdetaljer og bryder objektindkapslingen.
1
Opgave
Modul 3,  niveaulektie
Låst
USB MP3 Player
task4118
1
Opgave
Modul 3,  niveaulektie
Låst
Strategic shopping
task4119
1
Opgave
Modul 3,  niveaulektie
Låst
Game of Life
task4120
1
Opgave
Modul 3,  niveaulektie
Låst
Technical Support
task4121
1
Opgave
Modul 3,  niveaulektie
Låst
Memento mori
task4122
Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu