Brug af accessorer og mutatorer i Java

En af måderne, vi kan håndhæve datakapsling er gennem brug af accessorer og mutatorer. Adgangers og mutators rolle er at vende tilbage og indstille værdierne for et objekts tilstand. Lad os lære, hvordan man programmerer accessorer og mutatorer i Java. Som et eksempel bruger vi en Personklasse med den allerede definerede tilstand og konstruktør:

Accessor-metoder

en tilbehø metoden bruges til at returnere værdien af ​​et privat felt. Det følger et navneskema, der præfikser ordet "get" til starten af ​​metodenavnet. Lad os f.eks. Tilføje accessor-metoder til fornavn, mellemnavne og efternavn:

Disse metoder returnerer altid den samme datatype som deres tilsvarende private felt (f.eks. Streng) og returnerer derefter simpelthen værdien af ​​det private felt.

Vi kan nu få adgang til deres værdier gennem metoderne i et Person-objekt:

Mutatormetoder

En mutatormetode bruges til at indstille en værdi af et privat felt. Det følger et navneskema, der præfikser ordet "sæt" til starten af ​​metodenavnet. Lad os f.eks. Tilføje mutatorfelter til adresse og brugernavn:

instagram viewer

Disse metoder har ikke en returtype og accepterer en parameter, der er den samme datatype som deres tilsvarende private felt. Parameteren bruges derefter til at indstille værdien af ​​det private felt.

Det er nu muligt at ændre værdierne for adressen og brugernavnet i Person-objektet:

Hvorfor bruge accessorer og mutatorer?

Det er let at komme til den konklusion, at vi bare kunne ændre de private felter i klassedefinitionen til at være offentlige og opnå de samme resultater. Det er vigtigt at huske, at vi vil skjule dataene om objektet så meget som muligt. Det ekstra puffer leveret af disse metoder tillader os at:

  • Skift, hvordan dataene håndteres bag kulisserne.
  • Pålæg validering af de værdier, som felterne er indstillet til.

Lad os sige, at vi beslutter at ændre, hvordan vi gemmer mellemnavne. I stedet for kun en streng kan vi nu bruge en række strenge:

Implementeringen inde i objektet er ændret, men omverdenen påvirkes ikke. Den måde, hvorpå metoderne kaldes, forbliver nøjagtig den samme:

Eller lad os sige, at applikationen, der bruger Person-objektet, kun kan acceptere brugernavne, der har maksimalt ti tegn. Vi kan tilføje validering i setUsername mutator for at sikre os, at brugernavnet er i overensstemmelse med dette krav:

Hvis brugernavnet, der er sendt til setUsername mutator, nu er længere end ti tegn, afkortes det automatisk.