Korzystanie z akcesoriów i mutatorów w Javie

Jeden ze sposobów, w jaki możemy egzekwować enkapsulacja danych polega na użyciu akcesoriów i mutatorów. Rolą akcesorów i mutatorów jest zwracanie i ustawianie wartości stanu obiektu. Nauczmy się programować akcesoria i mutatory Jawa. Jako przykład użyjemy Klasa osobowa z już zdefiniowanym stanem i konstruktorem:

Metody akcesoriów

Na akcesor Metoda służy do zwracania wartości pola prywatnego. Podąża za schematem nazewnictwa poprzedzającym słowo „get” na początku nazwy metody. Na przykład dodajmy metody akcesora dla imienia, imienia i nazwiska:

Te metody zawsze zwracają ten sam typ danych co odpowiadające im pole prywatne (np. Ciąg), a następnie po prostu zwracają wartość tego pola prywatnego.

Możemy teraz uzyskać dostęp do ich wartości za pomocą metod obiektu Person:

Metody mutatora

Metoda mutatora służy do ustawienia wartości pola prywatnego. Podąża za schematem nazewnictwa poprzedzającym słowo „set” na początku nazwy metody. Na przykład dodajmy pola mutatora dla adresu i nazwy użytkownika:

instagram viewer

Te metody nie mają typu zwracanego i akceptują parametr, który jest tego samego typu danych co odpowiadające im pole prywatne. Ten parametr jest następnie używany do ustawienia wartości tego prywatnego pola.

Można teraz modyfikować wartości adresu i nazwy użytkownika w obiekcie Person:

Dlaczego warto korzystać z akcesoriów i mutatorów?

Łatwo dojść do wniosku, że moglibyśmy po prostu zmienić prywatne pola definicji klasy na publiczne i osiągnąć te same wyniki. Ważne jest, aby pamiętać, że chcemy jak najbardziej ukryć dane obiektu. Statysta bufor dostarczone przez te metody pozwalają nam:

  • Zmień sposób przetwarzania danych za kulisami.
  • Narzuć sprawdzanie poprawności wartości, dla których pola są ustawiane.

Powiedzmy, że postanowiliśmy zmodyfikować sposób przechowywania drugich nazwisk. Zamiast jednego ciągu możemy teraz użyć tablicy ciągów:

Implementacja wewnątrz obiektu uległa zmianie, ale nie ma to wpływu na świat zewnętrzny. Sposób wywoływania metod pozostaje dokładnie taki sam:

Lub, powiedzmy, aplikacja korzystająca z obiektu Osoba może akceptować tylko nazwy użytkowników, które mają maksymalnie dziesięć znaków. Możemy dodać sprawdzanie poprawności w mutatorze setUsername, aby upewnić się, że nazwa użytkownika jest zgodna z tym wymaganiem:

Teraz, jeśli nazwa użytkownika przekazana do mutatora setUsername jest dłuższa niż dziesięć znaków, zostanie ona automatycznie obcięta.