AS3 101: Fem grunner til å bruke settere og Getters
Del
Del
Del
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter AS3 101.AS3 101: OOP Introduksjon - BasixAS3 101:. Quick Tips - Bruk Tilgang Modifikatorer Effektivt
Selvfølgelig du vet om settere og getters, som doesn 't? (Hvis det er deg, kan det være lurt å friske opp Objektorientert programmering med min introduksjon til OOP tutorial). Men hvorfor bruke dem? Hvorfor gå til bryet med å lage ekstra funksjoner for å vikle rundt en eiendom? Her er fem grunner som er utrolig nyttig
Personlig bruker jeg hver av disse grunnene minst en gang om dagen ..
Grunn 1:. Du kan create read only-(eller skrive-only) egenskaper
Ved å gjøre selve eiendommen privat, og skriver bare en offentlig getter (uten matching setter), kan du gi tilgang til å lese verdien, men ikke tillate å endre verdi fra utsiden av klassen. Dette er nyttig for Uforanderlige Verdi Objekter som bærer en haug med data, men skal aldri skiftet en gang skapt. Det, og rundt 500 andre grunner til å bruke skrivebeskyttede egenskaper
Grunn 2:. Du kan utføre validering og auto-korrekte innkommende verdier
Tall egenskaper ofte krever et tall mellom en bestemt sett med verdier, eller som er avrundet til en viss presisjon. Du kan gjøre dette begrense eller avrunding i fuglehunden for å sikre rene verdier, eller, hvis det er nødvendig, kan du gjøre dette prosessering "on the fly" i getter, for å lagre en full presisjon verdi internt, men gir en ren verdi på utsiden.
På samme måte kan du gi standardverdier eller håndtere nullverdier med litt logikk. Anta at du har en person objekt, med fornavn og etternavn egenskaper. La oss si at virksomheten logikken i programmet tilsier at disse egenskapene ikke kan være null. De kan være tomme strenger, men de kan ikke være null (fordi, oh, la oss si at vi skal kjøre noen vanlige uttrykk søk på dem, og det ville bare være mye lettere å være sikker på at String finnes, i stedet for alltid sjekke for null)
Så, i din setter, kanskje du har noe sånt som dette:
offentlig funksjon satt fornavn (s: String):.! void {if (e) s = ""; _firstName = s;}
Hvis du tenker at du kan oppnå dette med standardverdier på argumenter, så du bør se opp kompilator feil # 1 123: ". En setter definisjon kan ikke ha valgfrie parametere"
Grunn 3: Du kan syntetisere data
Tenk deg at samme Person objekt fra den siste grunnen, med sitt fornavn og etternavn egenskaper. Å også gjennomføre en fullname eiendom kan du opprette en selve eiendommen, og sørg for at du oppdaterer fullt navn hver gang du setter fornavn og /eller etternavn egenskaper. Eller du kan rett og slett skape en fullt navn getter som returnerer en automatisk sammenkobling av fornavn og etternavn:
offentlig funksjon får fullt navn (): String {return fornavn + "" + lastname;}
Reason 4: Du kan skjule mer betydnings logikken bak en enkelt eiendom
Du kan ha en knapp klasse som omslutter en Sprite og håndterer mye av interaktivitet. En "aktiv" fuglehunden kunne ta en enkel boolsk verdi og gjøre det til mer kompleks logikk som legger til eller fjerner hendelsen lyttere, aktiverer eller deaktiverer hånden markøren, og slås på eller av mouseEnabled eiendommen av Sprite.
Grunn 5: Du kan egge visuelle endringer fra en eiendom endring
Dette følger sammen fra den siste grunnen. Hva om du hadde Slider objekt, som var representert på skjermen ved å, du vet, en skyveelement. Antar at dette objektet har en "verdi" eiendom. Ved å implementere en setter for verdien, kan du ikke bare sette den aktuelle eiendommen til det nummeret, men du kan da også oppdatere de visuelle elementer som er nødvendige for å gjøre glideren sin dra håndtaket flytte til riktig posisjon.
Som en bonus funksjonen, implementere det på denne måten vil også tillate deg å bruke en tweening motor på Slider objekt, og tween verdien. De fleste tweening motorer tillate deg å tween noen tall eiendom på et objekt, og med egenskaper som er virkelig settere og getters.