Zpo-5-wyk-Slajd39: 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:
==Data Clumps==
==Command: interakcje==


[[Image:zpo-5-wyk-Slajd39.PNG|Data Clumps]]
[[Image:zpo-5-wyk-Slajd39.PNG|Command: interakcje]]




Ten problem jest związany z innym przykrym zapachem – długą listą parametrów. Pojawiają się zbiory parametrów, które są wewnętrznie ze sobą związane, tworząc jeden logiczny zestaw informacji. Przekazywanie takich danych osobno ogranicza abstrakcję oraz dodatkowo komplikuje komunikację między metodami.
Szczegółowy przepływ sterowania przedstawia diagram sekwencji. Inicjatorem przetwarzania jest obiekt Invoker, który zarządza obiektami typu Command. W momencie nadejścia żądania wykonania określonej operacji Invoker parametryzuje skojarzony z nią obiekt Command właściwym odbiorcą ich działań, czyli obiektem Receiver. Następnie wywołuje metodę ''execute'' ''()'' w tym obiekcie, powodując określone skutki w obiekcie Receiver, widoczne dla Klienta.
 
Usunięcie tego przykrego zapachu polega na utworzeniu nowej klasy, która będzie przechowywała dotychczasowe osobne dane jako swoje pola. Warto zauważyć, że łatwo doprowadzić w ten sposób do powstania przykrego zapachu Data Class, jednak rozbudowa funkcjonalności nowej klasy zapobiegnie temu. Natomiast przekazywanie pojedynczego obiektu zamiast zbitki danych pozwala na uproszczenie struktury programu.




[[zpo-5-wyk-Slajd38 | << Poprzedni slajd]] | [[zpo-5-wyk-toc|Spis treści ]] | [[zpo-5-wyk-Slajd40 | Następny slajd >>]]
[[zpo-5-wyk-Slajd38 | << Poprzedni slajd]] | [[zpo-5-wyk-toc|Spis treści ]] | [[zpo-5-wyk-Slajd40 | Następny slajd >>]]

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

Command: interakcje

Command: interakcje


Szczegółowy przepływ sterowania przedstawia diagram sekwencji. Inicjatorem przetwarzania jest obiekt Invoker, który zarządza obiektami typu Command. W momencie nadejścia żądania wykonania określonej operacji Invoker parametryzuje skojarzony z nią obiekt Command właściwym odbiorcą ich działań, czyli obiektem Receiver. Następnie wywołuje metodę execute () w tym obiekcie, powodując określone skutki w obiekcie Receiver, widoczne dla Klienta.


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