Accessors en Mutators gebruiken in Java

Een van de manieren waarop we kunnen afdwingen inkapseling van gegevens is door het gebruik van accessors en mutators. De rol van accessors en mutators is om terug te keren en de waarden van de status van een object in te stellen. Laten we leren hoe we accessors en mutators kunnen programmeren Java. Als voorbeeld gebruiken we a Persoonsklasse met de staat en constructor al gedefinieerd:

Accessormethoden

Een accessor methode wordt gebruikt om de waarde van een privéveld te retourneren. Het volgt een naamgevingsschema waarbij het woord "get" aan het begin van de methodenaam voorafgaat. Laten we bijvoorbeeld accessormethoden toevoegen voor voornaam, middelste namen en achternaam:

Deze methoden retourneren altijd hetzelfde gegevenstype als hun bijbehorende privéveld (bijvoorbeeld String) en retourneren vervolgens eenvoudig de waarde van dat privéveld.

We hebben nu toegang tot hun waarden via de methoden van een Persoon-object:

Mutator-methoden

Een mutatormethode wordt gebruikt om een ​​waarde van een privéveld in te stellen. Het volgt een naamgevingsschema dat het woord "set" voorafgaat aan het begin van de methodenaam. Laten we bijvoorbeeld mutatorvelden toevoegen voor adres en gebruikersnaam:

instagram viewer

Deze methoden hebben geen retourtype en accepteren een parameter die hetzelfde gegevenstype is als het bijbehorende privéveld. De parameter wordt vervolgens gebruikt om de waarde van dat privéveld in te stellen.

Het is nu mogelijk om de waarden voor het adres en de gebruikersnaam in het Person-object te wijzigen:

Waarom accessors en mutators gebruiken?

Het is gemakkelijk om tot de conclusie te komen dat we de privévelden van de klassendefinitie gewoon openbaar kunnen maken en dezelfde resultaten kunnen behalen. Het is belangrijk om te onthouden dat we de gegevens van het object zoveel mogelijk willen verbergen. De extra buffer geboden door deze methoden kunnen we:

  • Verander hoe de gegevens achter de schermen worden verwerkt.
  • Leg validatie op de waarden waarop de velden worden ingesteld.

Laten we zeggen dat we besluiten om de manier waarop we middelste namen opslaan aan te passen. In plaats van slechts één tekenreeks kunnen we nu een reeks tekenreeksen gebruiken:

De implementatie binnen het object is veranderd, maar de buitenwereld wordt niet beïnvloed. De manier waarop de methoden worden genoemd, blijft precies hetzelfde:

Of stel dat de toepassing die het Person-object gebruikt, alleen gebruikersnamen kan accepteren die uit maximaal tien tekens bestaan. We kunnen validatie toevoegen in de setUsername-mutator om ervoor te zorgen dat de gebruikersnaam aan deze vereiste voldoet:

Als de gebruikersnaam die is doorgegeven aan de setUsername-mutator nu langer is dan tien tekens, wordt deze automatisch afgekapt.