Huis Persoonlijke financiën Inzicht in waarnemingspatronen - fantasieën

Inzicht in waarnemingspatronen - fantasieën

Inhoudsopgave:

Video: Inzicht in Omgevingsrecht 2024

Video: Inzicht in Omgevingsrecht 2024
Anonim

Met het ontwerppatroon van de waarnemer kunnen verschillende waarnemingsobjecten worden gewaarschuwd wanneer een onderwerpobject op de een of andere manier wordt gewijzigd. Elke waarnemer registreert zich bij het onderwerp en wanneer een verandering plaatsvindt, stelt het onderwerp ze allemaal op de hoogte. Elk van de waarnemers wordt gelijktijdig op de hoogte gesteld (dat wil zeggen, op hetzelfde moment).

Een onderwerpinterface maken

Wanneer u een ontwerppatroon implementeert, is het vaak een goed idee om te beginnen met het maken van een interface om ervoor te zorgen dat de objecten die u maakt zich zullen aanpassen aan het patroon dat u probeert te gebruiken - vooral als meerdere objecten zijn betrokken. Het implementeren van die interface - programmeren naar een interface zoals die wordt genoemd - houdt je code in lijn en houdt meestal dingen duidelijker.

Wanneer je het Waarnemingspa- troon in code zet, maak dan een interface of abstracte klasse voor de waarnemers; je hebt meestal meerdere waarnemers en je moet de methoden die ze implementeren consistent houden.

In dit voorbeeld moet u ook een interface voor het onderwerp instellen, wat de waarnemers bekijken; de Onderwerp-interface geeft de methoden weer die proefpersonen moeten implementeren. Zet hier een methode registerObserver, zodat het onderwerp waarnemers die willen worden geregistreerd kan volgen. Naast het registreren van waarnemers, zou je een manier moeten hebben om er vanaf te komen, dus voeg een removeObserver-methode toe. En er is een notifyObservers-methode die de waarnemers op de hoogte brengt van een verandering.

openbare interface Onderwerp

{

public void registerObserver (Observer o);

openbare inhoud removeObserver (Observer o);

openbare kennisgeving notifyObservers ();

}

Deze interface geeft de methoden weer die onderwerpen zoals het databasesysteem moeten implementeren. De volgende: de interface voor de waarnemers.

Een observatorinterface maken

Het bouwen van de waarnemingsinterface, geïmplementeerd door de waarnemers om hen in staat te stellen meldingen te ontvangen, is eenvoudig. Alles wat u nodig hebt, is een methode die wordt aangeroepen wanneer een nieuwe melding gereed is (u kunt die methode-update noemen). In dit voorbeeld geeft u de bewerkte databasebewerking door (zoals "bewerken", "verwijderen", "maken" enzovoort) en de record die als strings is gewijzigd in de updatemethode.

publieke interface Observer

{

openbare ongeldige update (String-bewerking, Stringrecord);

}

Wanneer waarnemers de updatemethode implementeren, kan het onderwerp ze doorgeven aan het betreffende record en de bewerking die werd uitgevoerd.

Oké, je bent klaar om te gaan. Het is tijd om het databaseonderwerp te maken dat de waarnemers in de gaten houdt en hen op de hoogte brengt wanneer er een wijziging is opgetreden.

Een onderwerp maken

Het onderwerp moet waarnemers registreren en moet hen op de hoogte stellen wanneer een gebeurtenis plaatsvindt. Volgens de Subject-interface zijn de drie methoden die een onderwerp moet implementeren in deze voorbeelden: registerObserver, removeObserver en notifyObservers. Dat is wat de klasse Database doet in dit voorbeeld.

Om de waarnemers bij te houden, gebruikt u een Java-vector met de naam waarnemers, gemaakt in de Database-constructor. (De type-aanduiding hier, is voor Java 1. 5 of hoger en geeft aan dat elk waarnemersobject de Observer-interface implementeert; als u een eerdere versie van Java gebruikt, laat dan de typespecificatie weg.)

java importeren. util. *;

Public Class Database implementeert Subject

{

private Vector-waarnemers;

openbare database ()

{

waarnemers = nieuwe vector ();

}

.

.

.

}

Wanneer u een vector gebruikt, is het bijhouden van waarnemers heel eenvoudig. Wanneer een waarnemer zich wil registreren, roept hij de methode registerObserver van het onderwerp aan, die zichzelf als object doorgeeft. Het onderwerp - een object van onze Database-klasse - hoeft alleen die waarnemer toe te voegen aan de waarnemersvector in de methode registerObserver, met behulp van de add-methode van de Vector-klasse.

java importeren. util. *;

Public Class Database implementeert Subject

{

private Vector-waarnemers;

openbare database ()

{

waarnemers = nieuwe vector ();

}

public void registerObserver (Observer o)

{

waarnemers. voeg (o);

}

.

.

.

}

Hoe zit het met het verwijderen van een waarnemer van de waarnemersvector? Geen probleem. Wanneer u een object uit een vector wilt verwijderen, kunt u de verwijdermethode van de vector gebruiken; Dit is hoe dat werkt in de removeObserver-methode van de klasse Database:

java importeren. util. *;

Public Class Database implementeert Subject

{

private Vector-waarnemers;

openbare database ()

{

waarnemers = nieuwe vector ();

}

public void registerObserver (Observer o)

{

waarnemers. voeg (o);

}

openbare nietige removeObserver (Observer o)

{

waarnemers. Verwijder (o);

}

.

.

.

}

Wanneer de gebruiker daadwerkelijk iets met de database doet - bijvoorbeeld een record verwijderen - roept hij de editRecord-methode van de klasse Database aan. Als u bijvoorbeeld record 1 wilt verwijderen, kunt u deze methode als volgt noemen:

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

Zo ziet de editRecord-methode eruit: Wanneer deze methode wordt aangeroepen, geeft u deze de databasewerking door die u wilt uitvoeren en de record waaraan u wilt werken, beide als tekenreeksen in dit voorbeeld. Die snaren worden opgeslagen zodat ze kunnen worden doorgegeven aan de waarnemers. Nadat de tekenreeksen zijn opgeslagen, wordt de methode notifyObservers, die hierna verschijnt, opgeroepen om alle waarnemers op de hoogte te stellen.

java importeren. util. *;

Public Class Database implementeert Subject

{

private Vector-waarnemers;

privéreeksbewerking;

private String record;

openbare database ()

{

waarnemers = nieuwe vector ();

}

.

.

.

public void editRecord (String-bewerking, tekenreeksrecord)

{

dit.operatie = operatie;

dit. record = record;

notifyObservers ();

}

}

Hier is het vlees van de code, het deel dat elke waarnemer waarschuwt dat er een wijziging heeft plaatsgevonden: de notifyObservers-methode. Elke waarnemer implementeert de Observer-interface van dit voorbeeld - wat betekent dat het een updatemethode heeft - dus notifyObservers hoeft alleen maar alle geregistreerde waarnemers in de waarnemersvector te doorlopen, waarbij de iemands updatemethode wordt aangeroepen met de databasebewerking en het betreffende record.

java importeren. util. *;

Public Class Database implementeert Subject

{

private Vector-waarnemers;

privéreeksbewerking;

private String record;

.

.

.

public void notifyObservers ()

{

for (int loopIndex = 0; loopIndex

Observer observer = (Observer) waarnemers. te krijgen (loopIndex);

waarnemer. update (bewerking, record);

}

}

public void editRecord (String-bewerking, tekenreeksrecord)

{

dit. operatie = operatie;

dit. record = record;

notifyObservers ();

}

}

Dat is alles wat u nodig heeft voor Database. java, het onderwerp in dit voorbeeld. Het onderwerp laat waarnemers zichzelf registreren, de registratie ongedaan maken en een melding ontvangen wanneer een databaserecord is bewerkt (wat u doet met de editRecord-methode van de klasse Database). Het enige wat je hoeft te doen om deze show onderweg te krijgen, is door de waarnemers zelf te maken.

Inzicht in waarnemingspatronen - fantasieën

Bewerkers keuze

Key Taoists in History - dummies

Key Taoists in History - dummies

De oorsprong van het taoïsme reikt terug tot het prehistorische China, en heeft een sterke invloed gehad over de Chinese cultuur in de loop van zijn geschiedenis. De volgende mensen vormden het Taoïsme in de tijd en maakten het tot wat het nu is: Lao Tzu: Lao Tzu is de traditionele & ldquo; oprichter & rdquo; van het taoïsme en de befaamde auteur van de Tao Te Ching. ...

Woorden die worden gebruikt om religieuze twijfel te beschrijven en te labelen - dummies

Woorden die worden gebruikt om religieuze twijfel te beschrijven en te labelen - dummies

Atheïsme en andere soorten religieuze twijfel zijn verworden a-blok met labels en voorwaarden. Sommige zijn belangrijker dan andere; sommige zijn neutraal of positief; anderen worden gebruikt (zelfs door atheïsten) als putdowns. De volgende lijst bevat alle belangrijke labels: goed, slecht en lelijk. Atheist: Gelooft niet dat er een god of goden bestaat. Agnostisch: ...

Basisbeginselen van tools voor het bewerken van mobiele foto's voor visuele sociale marketing - dummies

Basisbeginselen van tools voor het bewerken van mobiele foto's voor visuele sociale marketing - dummies

Met meer en meer mensen gebruikmakend van hun smartphones om foto's te maken voor visuele sociale marketing, is het niet verrassend dat veel toepassingen voor het bewerken van mobiele telefoons beschikbaar zijn. Dit zijn de voordelen van het gebruik van mobiele bewerkings-apps: ze zijn meestal gemakkelijk te gebruiken. Ze kosten meestal minder dan $ 5. Ze hebben unieke filters en bewerken ...

Bewerkers keuze

Hoe u metrics vermijdt met uw website Analytics-gegevens - dummies

Hoe u metrics vermijdt met uw website Analytics-gegevens - dummies

U kunt zich afvragen hoe ter wereld je fouten kunt maken met gegevens die in nette rapporten en grafieken aan je worden geleverd. Social media-metricservices doen er alles aan om alle en alle gegevens die u hen opgeeft, te verzamelen. Er zijn veel valkuilen voor statistieken. U kunt eenvoudig ...

Hoe codes en patronen voor sociale media te ontcijferen - dummies

Hoe codes en patronen voor sociale media te ontcijferen - dummies

Terwijl u uw sociale netwerk volgt media-metrieken in de loop van de tijd en beginnen met het gebruik van enkele van de volgende laag-hulpmiddelen, zoals segmentatie en dayparting, om uw online en sociale interactie te analyseren, het is belangrijk om uw oog te houden op patronen van gebruik, interesse en betrokkenheid en de geheime codes uw bezoekers en fans / volgers sturen ...

Hoe u uw Klout-account verwijdert - dummies

Hoe u uw Klout-account verwijdert - dummies

Als u besluit dat u niet langer wenst deel te nemen aan Klout, je kunt je volledig afmelden door naar de opt-outpagina op Klout te gaan. com. Omdat Klout openbare informatie gebruikt die van het internet is gehaald, kan het zijn dat er al wat gegevens voor u zijn opgeslagen, zelfs als u zich niet voor Klout hebt aangemeld. Of u nu wel of niet ...

Bewerkers keuze

Het tabblad Lettertype gebruiken in Word 2007 - dummies

Het tabblad Lettertype gebruiken in Word 2007 - dummies

Het tabblad Lettertype in het lettertype Word 2007 Het dialoogvenster bevat veel opdrachten voor het opmaken van tekst, waaronder enkele die u niet kunt openen via de groep Lettertype op het tabblad Start. U kunt bijvoorbeeld ook effecten zoals schaduwen en embossing toevoegen en een voorbeeld van de resultaten bekijken voordat u ze toepast. Roep het dialoogvenster Lettertype op. ...

Hoe u de opdracht Go To gebruikt in Word 2007 - dummies

Hoe u de opdracht Go To gebruikt in Word 2007 - dummies

Gebruikt u de opdracht Ga naar in Word 2007 om de invoegwijzer naar een specifieke pagina of regel te sturen of naar de locatie van een aantal interessante dingen die Word mogelijk in uw document kan invoegen.

Hoe de opdracht Ga naar Commando te gebruiken in Word 2016 - dummies

Hoe de opdracht Ga naar Commando te gebruiken in Word 2016 - dummies

U om de invoegwijzer naar een specifieke pagina of regel te sturen of naar de locatie van een aantal interessante items die Word mogelijk in uw document kan proppen. De opdracht Ga naar is je tekstverwerkende teleporter naar elke willekeurige locatie. Ga als volgt te werk om de opdracht Ga naar te gebruiken: ...