2012-01-24 16 views

Odpowiedz

11

mogę myśleć z kilku powodów:

  • chcesz, aby zapobiec w przyszłości dostęp publiczny.

Jeśli inny programista widzi Twój kod i chce uzyskać dostęp do zmiennej, ale nie ma ustawiaczy i pobierających, może pomyśleć, że po prostu o nich zapomniałeś i dodać je sam. Jeśli jednak zadeklarujesz je jako private, jest to deklaracja intencji, mówiąc: Nie chcę, aby te zmienne były zmieniane lub dostępne z zewnątrz.

  • chcesz skojarzyć ustawianie i pobieranie z innymi działaniami

powiedzieć, że nie chce public akcesorów. Ale może chcesz sprawdzić, ile razy zmienna prywatna została zmieniona. Łatwiej używać settera zamiast zwiększać liczbę za każdym razem, gdy uzyskujesz dostęp do tej zmiennej.

  • chcesz centralnego punktu dostępu

Znowu, nie chcesz public dostępu, ale podczas debugowania, może chcesz umieścić punkt przerwania w każdym miejscu członkiem private ulega zmianie. Zamiast więc ustawiać punkty przerwania wszędzie w klasie, wystarczy ustawić jedną z akcesorów.

8

To dokładnie przeciwieństwo tego, co staramy się osiągnąć poprzez podmioty pobierające i ustawiające.

W rzeczywistości tak nie jest. Powodem deklarowania modułów pobierających i ustawiających jest ukrywanie pól. Ma to na celu uniknięcie niepożądanego sprzężenia; tj. klientów API w zależności od szczegółów implementacji API. (To sprzężenie może być problematyczne z wielu powodów.)

Powodem utworzenia obiektu pobierającego i ustawiającego prywatna jest uczynienie odpowiedniej części abstrakcyjnego stanu obiektu prywatnym. To jest w dużej mierze niezależna od decyzji o użyciu modułów pobierających i ustawiających, czy też nie.

Chociaż argumenty przemawiające za wykorzystaniem metod pozyskiwania i ustalania nie są tak silne dla prywatnego państwa, nadal istnieją wymierne korzyści. Na przykład:

  • Metody getter/setter zapewniają miejsce na dodanie dodatkowego kodu zachowania lub sprawdzania błędów.

  • Zapewniają również miejsce do dodania kodu debugowania lub wstrzyknięcia kodu testowego (do testowania jednostkowego).

  • Ustawiacze i setery można nadpisać. Nie możesz tego zrobić z polami (prywatnymi lub nie).

Powiązane problemy