Zpo-11-wyk-Slajd39

Z Studia Informatyczne
Wersja z dnia 17:37, 4 lis 2006 autorstwa Bwalter (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Introduce Null Object

Introduce Null Object


Przekształcenie to służy do usunięcia porównań referencji do obiektu z wartością null . Porównania takie często pojawiają się w kodzie, ponieważ zapobiegają pojawieniu się wyjątku NullPointerException . Jednak duża ich liczba powoduje ograniczenie czytelności kodu.

Celem tego przekształcenia jest wykorzystanie polimorfizmu (podobnie jak w przypadku innych przekształceń dotyczących wyrażeń warunkowych) i stworzenie podklasy analizowanego obiektu reprezentującej wartość null .

Przekształcenie zaczyna się od stworzenia podklasy, której nazwa – zgodnie z konwencją – zaczyna się od słowa Null i która będzie reprezentowała niezainicjowane zmienne analizowanej klasy. W obu klasach (nadklasie i podklasie) należy zdefiniować metodę, która pozwoli odróżnić ich instancje – np. isNull (). W podklasie metoda ta zwraca wartość true , a w nadklasie – false . Następnie wszystkie przypisania wartości null należy zastąpić utworzeniem instancji podklasy. Dzięki temu można po kolei zmieniać występujące u klientów porównania z wartością null wywołaniem metody isNull ().

Dopiero po zakończeniu tej operacji jest możliwe pełne wykorzystanie polimorfizmu: należy pokryć w podklasie metody zwracające wartości odziedziczone po nadklasie, tak aby ich wyniki odpowiadały tym, których można się spodziewać po obiektach "pustych" (np. nazwisko nieistniejącego studenta może być napisem pustym). To pozwoli usunąć metody isNull () i warunkowe ich sprawdzanie, ponieważ wynik pokrytych metod wywoływanych na obiektach będzie zależał od klasy, do której należą.


<< Poprzedni slajd | Spis treści | Następny slajd >>