Quick Tips: Singleton Pattern 
 Del 
 Del 
 Del 
 Del 
 
 Dette Cyber mandag Envato Tuts + Kursene vil bli redusert til bare $ 3. Ikke gå glipp av. 
 
 To ganger i måneden, vi besøker noen av våre lesere favoritt innlegg fra hele historien Activetuts +. Denne ukens retro-Active Quick Tips, utgitt første gang i juni 2010, er en introduksjon til en populær (men ofte mis-bruk) design mønster. 
 
 I denne hurtig Tips vi skal snakke om Singleton design mønsteret og hvordan det kan hjelpe deg til å optimalisere koden din når du trenger nøyaktig en forekomst av en klasse 
 
 
 
Trinn 1:. Innledning
 Som en programmerer du må være klar over at det er noen tilfeller der du ønsker å bruke en forekomst av en klasse, men du ønsker å lage bare en og holde det gjennom hele programmet. Vel, det er hva Singletons er for 
 
Trinn 2:.? Hva er en Singleton
 En Singleton er et objektorientert design Pattern brukes av mange programmerere; det kan du lage en slags "global" forekomst av en klasse. Den er laget på en slik måte at bare en unik forekomst kan eksistere, slik at alle forekomstene av klassen er i nøyaktig samme tilstand 
 
Trinn 3:. Hvorfor skulle vi bruke det
?
 Det vanligste eksempelet ville være en score - for eksempel en fotball poengsum. Du ville ha en  Score   Begge lagene må være i stand til å øke sin poengsum når de gjør et mål, men du kan ikke gi hvert lag sin egen Score eksempel; du vil ha både tilgang til og endre den samme en   Dette er en sak der en enkelt er en perfekt løsning, siden det kan fungere som en global eksempel at noen kan få tilgang til.; du vil ha bare ett eksempel for alle, slik at du ikke trenger å bekymre deg for at hvert lag skal modifisere en annen poengsum   La oss nå start skape et enkelt inne AS3, men først må du huske de viktigste elementene i en singleton.   Opprett en ny AS3 klassen og kaller det  Singleton.as   (Ikke kjent med klassebasert koding? Sjekk ut denne rask intro)   Her er den grunnleggende Singleton kode:   Nå la oss gå og teste Singleton, først opprette en ny Flash-fil som heter  Main.fla   Opprett en ny klasse som heter "Main" og opprette en forekomst av Singleton bruke konstruktøren:   Lagre og kjøre den, vil du se at det kaster en feil å fortelle oss å bruke getInstance () -funksjonen i stedet, så gå videre og gjøre det:   Lagre og kjøre det, er det ingen feil nå, og du kan se i konsollen teksten "Singleton eksempel opprettet!", Noe som betyr at det ble opprettet.   Så når du bruker en Singleton klasse, kan du ikke bruke  ny Singleton ()   The Singleton er ikke veldig nyttig i minuttet. La oss legge en eiendom:   Nå, i  Main.as   For å bevise at Singleton gjør det den er ment å gjøre, opprette en singleton og endre eksempel eiendom til en av dem:   Hva tror du vil skje?   Dette fungerer selv om du opprette Singleton variabler i forskjellige klasser.   The Singleton mønsteret kan brukes på noen kode, og jeg anbefaler det hvis du skal bruke bare én forekomst av en klasse siden det gir deg bedre kontroll over det. Jeg håper du likte denne Quick Tips, takk for lesing!   Saludos -Eduardo Anmeldelser
 klasse, med egenskaper  homeTeamScore Hotell og  awayTeamScore Hotell og en metode som  increaseScore (team: Team) 
. 
 
 
 
 
 Trinn 4:. Singleton Class 
 
 
  Alle 
 må kunne få tilgang til det 
 
 Just  ett 
 eksempel kan opprettes. 
 
. 
 
 
 pakken {public class Singleton {private static Var eksempel:. Singleton; //Dette vil være en unik forekomst skapt av klassen private Static Var isOkayToCreate: Boolean = false; //Denne variabelen vil hjelpe oss å avgjøre om forekomsten kan opprettes offentlig funksjon Singleton () {//Hvis vi ikke kan opprette en forekomst, kaste en feil slik at ingen forekomsten blir opprettet if (isOkayToCreate!) Kaste nytt Feil (dette + "er en Singleton Tilgang ved hjelp getInstance ()."); } //Med denne metoden vil vi skape og få tilgang forekomsten av metoden public static funksjon getInstance (): Singleton {//Hvis det ikke er tilfelle, oppretter du den if (! Eksempel) {//tillate opprettelse av forekomsten, og etter at den er opprettet, stoppe lenger skapes isOkayToCreate = true; eksempel = new Singleton (); isOkayToCreate = false; spore ("Singleton eksempel opprettet!"); } Returnere eksempel; }}} 
 
 Trinn 5: Lag en Flash Prosjekt 
 
. På egenskaper panelet satt klassen også til  Hoved 
 
 
 Trinn 6:. Lag en Singleton 
 
 pakke {import flash.display.MovieClip; public class Hoved strekker MovieClip {offentlig funksjon main () {var testSingleton: Singleton = new Singleton (); }}} 
 pakke {import flash.display.MovieClip; public class Hoved strekker MovieClip {offentlig funksjon main () {var testSingleton: Singleton = Singleton.getInstance (); }}} 
 
, må du bruke  Singleton.getInstance () 
 stedet 
 
 
 Trinn 7:. Legg Properties til Klasse 
 
 pakken {public class Singleton {private static Var eksempel: Singleton; //Dette vil være en unik forekomst skapt av klassen private Static Var isOkayToCreate: Boolean = false; //Denne variabelen vil hjelpe oss å avgjøre om forekomsten kan opprettes //nytt eksempel eiendom: public Var exampleProperty: String = "Dette er et eksempel"; (! isOkayToCreate) offentlig funksjon Singleton () {//Hvis vi ikke kan opprette en forekomst, kaste en feil slik at ingen forekomsten blir opprettet hvis kaste nytt Feil (dette + "er en Singleton Tilgang ved hjelp getInstance ()."); } //Med denne metoden vil vi skape og få tilgang forekomsten av metoden public static funksjon getInstance (): Singleton {//Hvis det ikke er tilfelle, oppretter du den if (! Eksempel) {//tillate opprettelse av forekomsten, og etter at den er opprettet, stoppe lenger skapes isOkayToCreate = true; eksempel = new Singleton (); isOkayToCreate = false; spore ("Singleton eksempel opprettet!"); } Returnere eksempel; }}} 
, du kan få tilgang til  testSingleton.exampleProperty 
 akkurat som om det var en vanlig klasse. Prøv å spore den ut 
 
 
 Trinn 8:. Prøv Opprette annen Singleton 
 
 pakke {import flash.display.MovieClip; public class Hoved strekker MovieClip {offentlig funksjon main () {var testSingleton: Singleton = Singleton.getInstance (); Var anotherSingleton: Singleton = Singleton.getInstance (); anotherSingleton.exampleProperty = "Dette er satt i anotherSingleton"; trace (testSingleton.exampleProperty, anotherSingleton.exampleProperty); }}} 
 
 
 
 Konklusjon 
 
 
			 
        

