Yksi tavoista, joilla voimme valvoa tietojen kapselointi tapahtuu lisälaitteiden ja mutaattoreiden avulla. Liittäjien ja mutaattoreiden tehtävänä on palauttaa ja asettaa esineen tilan arvot. Oppitaan kuinka ohjelmoida lisälaitteita ja mutaattoreita Jaava. Esimerkiksi käytämme a Henkilöluokka jo määritellyn tilan ja rakentajan kanssa:
Lisäysmenetelmät
ohjakse menetelmää käytetään palauttamaan yksityisen kentän arvo. Se seuraa nimeämisjärjestelyä, joka edeltää sanaa "get" menetelmän nimen alkuun. Lisäämme esimerkiksi lisälaitemenetelmät etunimeen, keskimmäisiin nimiin ja sukunimeen:
Nämä menetelmät palauttavat aina saman tietotyypin kuin vastaava yksityinen kenttä (esim. Merkkijono) ja palauttavat sitten vain kyseisen yksityisen kentän arvon.
Nyt voimme käyttää heidän arvojaan Henkilö-objektin menetelmillä:
Mutaattorimenetelmät
Mutaattorimenetelmää käytetään yksityisen kentän arvon asettamiseen. Se seuraa nimeämisjärjestelyä, joka edeltää sanaa "set" menetelmän nimen alkuun. Lisäämme esimerkiksi mutaattorikentät osoitteeseen ja käyttäjänimeen:
Näillä menetelmillä ei ole paluutyyppiä, ja ne hyväksyvät parametrin, joka on sama tietotyyppi kuin vastaava yksityinen kenttä. Parametria käytetään sitten kyseisen yksityisen kentän arvon asettamiseen.
Nyt on mahdollista muokata osoitteen ja käyttäjänimen arvoja Henkilö-objektissa:
Miksi käyttää lisälaitteita ja mutaattoreita?
On helppo päätellä, että voisimme vain muuttaa luokan määritelmän yksityiset kentät julkisiksi ja saavuttaa samat tulokset. On tärkeää muistaa, että haluamme piilottaa objektin tiedot mahdollisimman paljon. Ylimääräinen puskuri näiden menetelmien avulla voimme:
- Muuta tapaa, jolla tietoja käsitellään kulissien takana.
- Aseta validointi arvoille, joille kentät asetetaan.
Oletetaan, että päätämme muuttaa tavanomaisten nimien tallentamista. Yhden merkkijonon sijasta voimme nyt käyttää joukko merkkijonoja:
Objektin sisäinen toteutus on muuttunut, mutta se ei vaikuta ulkomaailmaan. Tapa, jolla menetelmiä kutsutaan, on täsmälleen sama:
Tai sanotaan esimerkiksi, että Henkilö-objektia käyttävä sovellus voi hyväksyä vain käyttäjätunnukset, joissa on enintään kymmenen merkkiä. Voimme lisätä validoinnin setUsername -mutaattoriin varmistaaksemme, että käyttäjänimi vastaa tätä vaatimusta:
Nyt jos setUsername -mutaattorille välitetty käyttäjänimi on pidempi kuin kymmenen merkkiä, se katkaistaan automaattisesti.