Zpo-6-wyk-Slajd15: 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:
==Replace Parameter with Explicit Method==
==Chain of Responsibility: przykład 2==


[[Image:zpo-6-wyk-Slajd15.PNG|Replace Parameter with Explicit Method]]
[[Image:zpo-6-wyk-Slajd15.PNG|Chain of Responsibility: przykład 2]]




Problem rozwiązywany przez to przekształcenie dotyczy metod, których zachowanie zależy od wartości jednego z parametrów. Rozwiązaniem polega na utworzeniu osobnych wersji metody dla każdej wartości tego parametru (jeżeli jest ich kilka) i właściwym ich nazwać.
Z uwagi na wymienione wcześniej niedogodności, przede wszystkim możliwość przerwania łańcucha sterowania, możliwa jest także inna struktura przetwarzania, która nie posiada już topologii łańcucha. W tym rozwiązaniu pojawia się nowa rola: zarządcy, który posiada referencje do wszystkich filtrów. Zarządca (w tym przypadku jest nim także obiekt Inbox) wywołuje po kolei wszystkie filtry, które obsługują daną wiadomość lub nie. Jednak dzięki temu, że filtry nie przekazują sobie bezpośrednio sterowania, nie ma możliwości przerwania łańcucha, a ponadto informacja o nieobsłużeniu żądania może być w łatwy sposób przedstawiona klientowi przez zarządcę.  
 
Przekształcenie zaczyna się od utworzenia nowych metod, które w nazwach będą zawierały jedną z wartości usuwanego parametru. Następnie z instrukcji warunkowej należy skopiować zawartość właściwej gałęzi, a w jej miejscu umieścić wywołanie nowej metody. Kolejnym krokiem jest aktualizacja klientów, aby korzystali z nowych wersji metod, i usunięcie nieużywanej obecnie oryginalnej wersji metody.




[[zpo-6-wyk-Slajd14 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd16 | Następny slajd >>]]
[[zpo-6-wyk-Slajd14 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd16 | Następny slajd >>]]

Aktualna wersja na dzień 11:09, 17 paź 2006

Chain of Responsibility: przykład 2

Chain of Responsibility: przykład 2


Z uwagi na wymienione wcześniej niedogodności, przede wszystkim możliwość przerwania łańcucha sterowania, możliwa jest także inna struktura przetwarzania, która nie posiada już topologii łańcucha. W tym rozwiązaniu pojawia się nowa rola: zarządcy, który posiada referencje do wszystkich filtrów. Zarządca (w tym przypadku jest nim także obiekt Inbox) wywołuje po kolei wszystkie filtry, które obsługują daną wiadomość lub nie. Jednak dzięki temu, że filtry nie przekazują sobie bezpośrednio sterowania, nie ma możliwości przerwania łańcucha, a ponadto informacja o nieobsłużeniu żądania może być w łatwy sposób przedstawiona klientowi przez zarządcę.


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