Zpo-7-wyk-Slajd33: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 1: Linia 1:
==Przykład==
==Visitor: konsekwencje==


[[Image:zpo-7-wyk-Slajd33.PNG|Przykład]]
[[Image:zpo-7-wyk-Slajd33.PNG|Visitor: konsekwencje]]




Przykładem jest ten sam zestaw klas, na którym omawiane było przekształcenie Hide Delegate. Stan wyjściowy polega na obecności w klasie Tom metody publicznej ''autor'' ''(),'' która udostępnia obiekt klasy Autor bez pośrednictwa obiektu klasy Książka. Zatem klient, chcąc uzyskać nazwisko Autora Książki, której Tom trzyma w ręku, wywołuje ''tom'' ''.'' ''autor'' ''().'' ''nazwisko'' .
Najważniejszą zaletą tego wzorca jest możliwość wykonania przy odwiedzinach każdego elementu w strukturze pewnego kodu zależnego od typu tego elementu. Ta cecha decyduje o popularności i szerokich możliwościach stosowania tego wzorca.
 
Dodawanie nowych implementacji interfejsu Visitor jest łatwe, ponieważ wymaga jedynie stworzenia nowej klasy i zaimplementowania jej metod. Z drugiej strony, dodanie nowego elementu do odwiedzenia jest trudne, ponieważ wymaga dodania nowej metody do wszystkich obiektów Visitor.
 
Wzorzec ten w szczególności nadaje się do akumulacji stanu podczas przejścia przez strukturę obiektów (akumulacja odbywa się wówczas wewnątrz obiektu Visitor).
 
Należy jednak zwrócić uwagę, że wzajemne wywoływanie metod ''visit'' ''()'' i ''accept'' ''()'' w obiektach Visitor i Element wymaga, aby metody te były dla siebie wzajemnie dostępne. W C++ można wykorzystać w tym celu klasy zaprzyjaźnione, natomiast w Javie konieczne jest upublicznienie metod, co w pewnym stopniu narusza ich hermetyzację.




[[zpo-7-wyk-Slajd32 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd34 | Następny slajd >>]]
[[zpo-7-wyk-Slajd32 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd34 | Następny slajd >>]]

Aktualna wersja na dzień 19:16, 4 lis 2006

Visitor: konsekwencje

Visitor: konsekwencje


Najważniejszą zaletą tego wzorca jest możliwość wykonania przy odwiedzinach każdego elementu w strukturze pewnego kodu zależnego od typu tego elementu. Ta cecha decyduje o popularności i szerokich możliwościach stosowania tego wzorca.

Dodawanie nowych implementacji interfejsu Visitor jest łatwe, ponieważ wymaga jedynie stworzenia nowej klasy i zaimplementowania jej metod. Z drugiej strony, dodanie nowego elementu do odwiedzenia jest trudne, ponieważ wymaga dodania nowej metody do wszystkich obiektów Visitor.

Wzorzec ten w szczególności nadaje się do akumulacji stanu podczas przejścia przez strukturę obiektów (akumulacja odbywa się wówczas wewnątrz obiektu Visitor).

Należy jednak zwrócić uwagę, że wzajemne wywoływanie metod visit () i accept () w obiektach Visitor i Element wymaga, aby metody te były dla siebie wzajemnie dostępne. W C++ można wykorzystać w tym celu klasy zaprzyjaźnione, natomiast w Javie konieczne jest upublicznienie metod, co w pewnym stopniu narusza ich hermetyzację.


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