Hjem Personlig finansiering Forstå Observer Patterns - dummies

Forstå Observer Patterns - dummies

Indholdsfortegnelse:

Video: ? HELENA NOVAK INTERROGATION ? - OBSERVER Gameplay Ep 6 - Let's Play OBSERVER Walkthrough 2025

Video: ? HELENA NOVAK INTERROGATION ? - OBSERVER Gameplay Ep 6 - Let's Play OBSERVER Walkthrough 2025
Anonim

Observer-designmønsteret lader flere observatørobjekter blive underrettet, når et motivobjekt ændres på en eller anden måde. Hver observatør registrerer med emnet, og når en ændring opstår, underretter emnet dem alle. Hver af observatørerne meddeles parallelt (det vil sige på samme tid).

Oprettelse af en faggrænseflade

Når du implementerer et designmønster, er det ofte en god idé at starte med at oprette en grænseflade for at sikre, at de objekter, du opretter, overholder det mønster, du forsøger at bruge - især hvis flere objekter er involveret. Implementering af denne grænseflade - programmering til en grænseflade som den hedder - holder din kode på linie og holder normalt tingene klarere.

Når du sætter Observer-mønsteret i kode, skal du oprette en grænseflade eller abstrakt klasse for observatørerne; du vil normalt have flere observatører, og du skal holde de metoder, de implementerer konsistent.

I dette eksempel skal du også oprette en grænseflade for emnet, hvilket er hvad observatørerne ser; Emne-grænsefladen viser de metoder, som emner skal implementere. Sæt en registerObserver metode her, så emnet kan holde styr på observatører, der ønsker at blive registreret. Udover at registrere observatører, skal du have en eller anden måde at slippe af med dem, så tilføj en removeObserver metode. Og der er en notifyObservers metode, der vil underrette observatørerne om en vis forandring.

offentlig grænse Emne

{

offentligt tomt registerObserver (Observer o);

offentlig ugyldig removeObserver (Observer o);

offentligt ugyldigt notificere observatører ();

}

Denne grænseflade viser de metoder, som emner som databasesystemet skal implementere. Næste op: grænsefladen for observatørerne.

Oprettelse af en observatørgrænseflade

Opbygning af Observer-grænsefladen, som er gennemført af observatørerne for at gøre det muligt for dem at få besked, er enkelt. Alt du behøver, er en metode, der vil blive kaldt, når en ny meddelelse er klar (du kan kalde den metodeopdatering). I dette eksempel passerer du den databaseoperation, der blev udført (såsom "redigere", "slette", "oprette" osv.) Og den post, der blev ændret som strenge til opdateringsmetoden.

offentlig grænseflade Observer

{

offentlig ugyldig opdatering (String operation, String record);

}

Når observatører implementerer opdateringsmetoden, kan emnet passere dem den rekord, der er blevet påvirket, og den operation, der blev udført.

Okay, du er god at gå. Det er på tide at oprette databasematerialet, der skal holde styr på observatørerne og underrette dem, når der er sket en ændring.

Oprettelse af et emne

Faget skal lade observatører registrere og skal underrette dem, når en begivenhed opstår. Ifølge Emne-grænsefladen skal de tre metoder, et emne skal implementere i disse eksempler, være: registerObserver, removeObserver og notifyObservers. Det er det, som databaseklassen gør i dette eksempel.

For at holde styr på observatørerne skal du bruge en Java-vektor, der hedder observatører, der er oprettet i databasekonstruktøren. (Typespecifikationen her, er til Java 1. 5 eller senere og angiver, at hvert observerobjekt implementerer Observer-grænsefladen; hvis du bruger en tidligere version af Java, skal du udelade typespecifikationen.)

importer java. util. *;

public class Database implementerer Emne

{

private Vector observatører;

offentlig database ()

{

observatører = ny vektor ();

}

.

.

.

}

Når du bruger en vektor, er det nemt at holde styr på observatører. Når en observatør ønsker at registrere, kalder det subjektets registerObserver-metode, som passerer sig som et objekt. Faget - en genstand for vores database klasse - skal blot tilføje observatøren til observatørvektoren i registerObserver-metoden ved hjælp af Vector-klassens add-metode.

importer java. util. *;

public class Database implementerer Emne

{

private Vector observatører;

offentlig database ()

{

observatører = ny vektor ();

}

offentligt ugyldigt registerObserver (Observer o)

{

observatører. tilføje (o);

}

.

.

.

}

Hvad med at fjerne en observatør fra observatørvektoren? Intet problem. Når du vil fjerne et objekt fra en vektor, kan du bruge vektorens fjernmetode. Sådan fungerer det i databaseklassens removeObserver-metode:

importer java. util. *;

public class Database implementerer Emne

{

private Vector observatører;

offentlig database ()

{

observatører = ny vektor ();

}

offentligt ugyldigt registerObserver (Observer o)

{

observatører. tilføje (o);

}

public void removeObserver (Observer o)

{

observatører. fjerne (o);

}

.

.

.

}

Når brugeren rent faktisk gør noget med databasen - sletter en rekord, for eksempel - han kalder databaseklassens redigeringsmetode. Hvis du f.eks. Vil slette post 1, kan du kalde denne metode som denne:

database. editRecord ("delete", "record 1");

Her er hvad redigeringsmetoden ser ud: Når denne metode kaldes, sender du den databaseoperation, du vil udføre, og den post, du vil arbejde på, både som strenge i dette eksempel. Disse strenge gemmes, så de kan videreføres til observatørerne. Efter at strængerne er gemt, kaldes notifyObservers-metoden, der kommer op næste, til at underrette alle observatører.

importer java. util. *;

public class Database implementerer Emne

{

private Vector observatører;

Private String operation;

Private String Record;

offentlig database ()

{

observatører = ny vektor ();

}

.

.

.

public void editRecord (String operation, String record)

{

dette.operation = operation

dette. record = record;

notifyObservers ();

}

}

Her er koden i koden, den del, der meddeler hver observatør, at der har været en ændring: notifyObservers-metoden. Hver observatør implementerer dette eksempels Observer-grænseflade - hvilket betyder, at det har en opdateringsmetode - så notificere. Observerne skal bare løbe over alle registrerede observatører i observatørvektoren, der kalder hver enkelt opdateringsmetode med databaseoperationen og den berørte post.

importer java. util. *;

public class Database implementerer Emne

{

private Vector observatører;

Private String operation;

Private String Record;

.

.

.

offentlig ugyldig meddelelse om observatører ()

{

for (int loopIndex = 0; loopIndex

Observer observatør = (Observer) observatører. få (loopIndex);

observatør. opdatering (drift, optagelse);

}

}

offentlig ugyldig editRecord (String operation, String record)

{

dette. operation = operation

dette. record = record;

notifyObservers ();

}

}

Det er alt hvad du behøver for Database. java, emnet i dette eksempel. Faget vil lade observatører registrere sig, afmelde sig selv og få besked, når en databasepost er redigeret (som du gør med databaseklassens redigeringsmetode). Alt, hvad der skal gøres for at få dette show på vejen, er at skabe observatørerne selv.

Forstå Observer Patterns - dummies

Valg af editor

Få hjælp til din kodependency - dummies

Få hjælp til din kodependency - dummies

Hvis du mener, at du måske er afhængig af hinanden, har du brug for hjælp til at ændre din adfærd. Her er nogle kilder til hjælp til dem, der lider af kodependens: Læs alt hvad du kan om kodependency (men læsning alene er utilstrækkelig til at ændre). Gå til et tolv-trinsmøde for kodependenter, f.eks. Codependents Anonym, kaldet CoDA eller Al-Anon for ...

Helbredelse Depression med Mindfulness er muligt - men det tager tid - dummies

Helbredelse Depression med Mindfulness er muligt - men det tager tid - dummies

Med den rigtige støtte , er opsving fra depression med mindfulness muligt. Det er nyttigt at huske at enhver helbredelse gennem depression tager tid og ofte mødes med en op og ned proces af lows, højder, stabile perioder, lavt niveau igen, så mere stabile tider, der fører til en anden forbedring og følelse bedre. Så meget som du ...

Sunde alternativer til loathsome Personal Labels - dummies

Sunde alternativer til loathsome Personal Labels - dummies

Du kan forandre hvordan du føler ved at ændre den måde du tænker og snakker om dig selv. Nedenstående tabel opdeler mellem negative selvdæmpende etiketter, som du måske siger højt eller indadtil tænker på dig selv og konstruktive sundere bekræftelser, som du kan vælge at sige og føle i stedet. At skifte dine ord på denne måde kan hjælpe dig ...

Valg af editor

Sådan oprettes dit DSLR-filmprojekt - dummier

Sådan oprettes dit DSLR-filmprojekt - dummier

Det er nemt at starte et DSLR-filmprojekt. Bare gå til Fil → Ny → Projekt for at lave en ny. Derefter skal du give det et navn, helst en der har noget at gøre med filmen. Du kan kalde det The Last Kiss eller Debbie. Det er ligegyldigt. Bare navngiv det og klik på OK. Udnyt ...

Sådan skaber du dramatisk lys til din DSLR-film - dummier

Sådan skaber du dramatisk lys til din DSLR-film - dummier

Forstå begrebet dramatisk belysning er en start, men teori får dig kun så langt. Det hjælper ikke medmindre du kan bruge din DSLR til at skabe overbevisende belysning. Traditionelt trepunkts lys giver et godt udgangspunkt. Derefter bliver tingene mere interessante. Filmlys som Rembrandt Når du tænker på det mest dramatiske ...

Hvordan man laver magiske film med flip video - dummier

Hvordan man laver magiske film med flip video - dummier

En magisk film er magisk, primært fordi du er overlader det til FlipShare til at redigere sammen tilfældige segmenter af dine klip og billeder i en endelig forkortet film, der fanger den overordnede essens af dine klip. Nogle vigtige beslutninger Magic Movie-funktionen gør med hensyn til dine klip, når du opretter en Magic Movie ...

Valg af editor

Hvordan man arbejder med CSS3-moduler - dummier

Hvordan man arbejder med CSS3-moduler - dummier

For at gøre det enklere, kan CSS3-modulerne adskilles i ti kategorier: grænser, baggrunde, skrifttyper, teksteffekter, flere kolonner, overgange, 2D overgange, 3D overgange, animationer og brugergrænseflade. Tag et kort kig på hvert modul for at se, hvad det kan gøre. Grænser: Grænsemodulet udvider kapaciteterne i grænsekategorien ved at tilføje valgmuligheder ...

Sådan arbejder du med CSS3 Pattern Selectors - dummies

Sådan arbejder du med CSS3 Pattern Selectors - dummies

I nogle tilfælde et valg du har brug for make in CSS3 har intet at gøre med enten tags eller attributter, men mønsteret, hvor objekterne vises på siden. Du kan f.eks. Kun vælge det første objekt, uanset hvad det pågældende objekt kan være. I nogle tilfælde vil du ...

Hvordan man arbejder med skyder i CSS3 - dummies

Hvordan man arbejder med skyder i CSS3 - dummies

Skydere giver brugeren mulighed for at indtaste en værdi visuelt - som en del af en helhed. I CSS3 sikrer en skyder, at brugeren indtaster en korrekt værdi inden for en række værdier, så du behøver ikke bekymre dig om sikkerhedsproblemer eller forkerte værdier. Som et resultat giver skyderen et værdifuldt middel til ...