Innehållsförteckning:
Video: Rhaegar: was Jon’s father the true hero of Game of Thrones? 2024
Ordet händelse visar upp alla typer av bilder. För en nonprogrammer är en händelse bara "något som händer. "Om du är van vid att hantera Windows och ramar i Java, tänker du förmodligen på en händelse som en händelse som väcker en del kod. Till exempel, en användares musklick eller knapptryckning väcker upp koden som anger ett alternativ och visar en OK-ruta. Klick eller knapptryckning i sig kallas en händelse eftersom det händer oberoende av det pågående programmet. Endast användaren vet när han eller hon trycker på den knappen. Och när knappen trycks ned vaknar en del av Java-programmet bara och hanterar situationen. Detta scenario kallas händelsesdriven programmering .
Händelsesdriven programmering
SAX-program är händelsesdrivna . Till exempel går du in i sängen för en god natts sömn. Du når över för att ställa in din väckarklocka och sedan slå sig in, stänga dina ögon och bli omedvetna om ett antal timmar. Då händer en viktig händelse: En viss tid på dagen anländer. När händelsen sker, går väckarklockan i sitt "vakna" -läge - och gör en hemsk mun för att röra dig ur din vilsam sömn.
Här är ett annat scenario. Du är en upptagen verkställande och du kommer att vara ute i flera timmar, men du vill inte sakna något viktigt företag. Innan du lämnar kontoret berättar du din assistent, "Ring mig om någonting viktigt kommer upp. "Utfärdande av denna order är relaterad till att väckarklockan ställs in. Du berättar din assistent (din väckarklocka) för att väcka dig om en händelse äger rum. Att göra denna begäran till din assistent (eller till din väckarklocka) heter registrering . I båda scenarierna registrerar du dig själv med en wakeup-tjänst. Efter att du har registrerat dig kan du fortsätta din avslappnade icke-verksamhet, ignorera alla verkliga affärer tills en händelse inträffar. Sedan …
Ring, ring. Din mobiltelefon höljer på dig. "Hallå? ”
”Hello. Det här är din assistent. Jag har försäljnings siffror för första kvartalet. De är 1 miljoner, 4 miljoner och 2 miljoner. "
" Låt oss se. Det är totalt 7 miljoner, säger du. "Jag noterar det på min PalmPilot. Tack. " Du lägger på.
Flera ögonblick senare får du ett nytt samtal. "Presidenten för Big Bucks, Inc., vill stänga den affären. De pratar 10 miljoner dollar. ”
"Hmm," svarar du. "Det kommer att ge våra årliga inkomster upp till 17 megabucker. Jag lagrar den informationen i min kalkylarksapplikation. Tack för att du ringde. "
Var och en av dessa interaktioner kallas en återuppringning .Tidigare på dagen, när du registrerade din önskan med assistenten, begärde du en återuppringning. Då, när en händelse äger rum, gör assistenten en återuppringning för att meddela dig om händelsen. I Java-programmeringsvillkoren ringer assistenten en av dina många metoder (ett av dina Java-delprogram).
Kärnan i händelsesdriven programmering
Händelsesdriven programmering har tre delar:
- Registrering: Du registrerar ditt önskemål om att bli underrättad när en händelse inträffar. Du registrerar denna önskan med ett annat kodstycke - ett annat objekt, vanligtvis något du har importerat (till exempel ett kodnummer som ingår i någon annans API). Detta objekt tittar sedan bakom kulisserna för händelsen som du angav.
- Händelse förekomst: En specifik händelse händer.
- Återuppringning: Den andra kodstycket utför en återuppringning. En av dina metoder kallas.
Två typer av kod
Skillnad mellan aktiv kod och passiv -kod är användbar:
- Aktiv kod har en huvudmetod. Aktiv kod, när den börjar köra, tar det centrala steget. Aktiv kod innehåller tråden av körning som styr hela bollspelet.
- Passiv kod sitter bara där och väntar på att bli kallad. En passiv tärningsklass gör ingenting tills någon annan kod kallar tärning. rulla().
Nu kanske du tror att passiv kod är allt du behöver för händelsesdriven programmering men det är det inte. För händelsehantering behöver du detta registreringssteg. Den passiva koden börjar med att bli registrerad med något annat kodstycke.
Tänk på ett exempel från mus, fönster och knappar på skärmen för att fastställa detta begrepp. Du skapar ett fönster eller en ram. Du vill att din ram ska svara på musklick, så du utfärdar följande kommando:
-knappen. addMouseListener (detta);
Den här kommandot registrerar din ram med knappen. Kommandot säger i själva verket När en mushändelse händer, ring en av ramens mushanteringsmetoder . Senare, när användaren klickar på musen får rammen en återuppringning. Datorn kallar ramens musklickade metod.
SAX-händelser
Visst, SAX är händelsestyrt, men det betyder inte att ett SAX-program väntar på musklick. I stället följer SAX-koden den registret-händelse-återkallningsmodell som beskrivs i de sista flera styckena. Varje SAX-program har två oumbärliga kodstycken:
- Ett stycke kod du skriver - kallat handler . (Din hanterare kan förlänga en förskriven DefaultHandler-klass.) Handlaren är som miljon dollar verkställande i föregående avsnitt.
- Ett stycke kod som du normalt inte skriver - parser . Parsern spelar en roll som chefens assistent. Java 1. 4 API har en inbyggd parser. Du skapar en instans av den här parsern och registrerar sedan din hanterare med den parserinstansen. I själva verket berättar du förekomsten att ringa tillbaka din handlar närhelst en händelse äger rum.
Något som har att göra med XML är nytt, och är fortfarande i ett tillstånd av flöde. På grund av detta sammanpressas terminologin på några speciella sätt. Under utveckling av SAX version 2 hade vissa tekniker en make-up-new-names festival. Vad som vanligtvis kallas en "parser" är uppbyggd i ett Java-gränssnitt som heter XMLReader. Det brukade vara en klass med namnet org. xml. sax. Parser, men klassen har avskriven (vilket innebär att du ska skrapa bort den från din skos botten). För att göra sakerna lite mer komplicerade finns det fortfarande ett annat analysverktyg, javax. xml. tolkar. SAXParser. Du använder denna SAXParser för att skapa en XMLReader. Med någon tur kommer du snabbt att bli van vid denna härliga terminologi. För nu, kom ihåg att det som kallas en "parser" är vanligtvis en förekomst av XMLReader.
Registret-och-återkopplingsscenariot är det som gör SAX händelsedriven. Nu är det roligt, en SAX-händelse är inte konkret. En SAX-händelse kommer inte påminna dig om ett tangenttryck eller en knapptryckning. I SAX skannar parsaren ett XML-dokument från topp till botten. När parsern möter något intressant, parsaren avfyras av en händelse och kallar handlaren. Då är det upp till handlaren att göra något om detta intressanta möte.