Zpo-5-wyk-Slajd38: 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 Class==
==Command: struktura==


[[Image:zpo-5-wyk-Slajd38.PNG|Data Class]]
[[Image:zpo-5-wyk-Slajd38.PNG|Command: struktura]]




Klasa jest jednostką kodu obdarzoną odpowiedzialnością. Zatem klasy, których odpowiedzialność sprowadza się do przechowywania danych, nie są poprawne i powinny zostać zmodyfikowane. Oczywiście, istnieją technologie lub obszary zastosowań, w których tego typu obiekty są pożądane. Przykładem może być wzorzec projektowy J2EE Data Transfer Object, w którym obiekt takiej klasy służy do przenoszenia zbioru danych między rozproszonymi komponentami aplikacji. Takie rozwiązanie przynosi wówczas znaczny wzrost wydajności. Podobna argumentacja może również (choć nie powinna) dotyczyć także technologii Java Beans. W praktyce jednak zawsze powinno się ze zbiorem danych związać pewną funkcjonalność – i właśnie jej braku dotyczy ten przykry zapach.
Podstawowym elementem wzorca jest interfejs Command, deklarujący metodę ''execute'' ''().'' Jest to polimorficzna metoda reprezentująca polecenie do wykonania. Metoda ta jest implementowana w klasach ConcreteCommand w postaci polecenia wykonania określonej akcji na obiekcie-przedmiocie Receiver.  


Istnieją dwa rozwiązania: rozszerzenie klasy o nową funkcjonalność, aby stałą się w pełni odpowiedzialna za siebie, lub przeniesienie pozostałych resztek funkcjonalności i usunięcie klasy z systemu. Wówczas dane przechowywane przez nią są rozdzielane pomiędzy korzystających z niej klientów.
Warto zauważyć, że klient nie jest bezpośrednio związany ani z obiektem Command, ani z obiektem inicjującym jego wywołanie, czyli Invoker. Widzi jedynie odbiorcę wyników operacji – obiekt Receiver.




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

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

Command: struktura

Command: struktura


Podstawowym elementem wzorca jest interfejs Command, deklarujący metodę execute (). Jest to polimorficzna metoda reprezentująca polecenie do wykonania. Metoda ta jest implementowana w klasach ConcreteCommand w postaci polecenia wykonania określonej akcji na obiekcie-przedmiocie Receiver.

Warto zauważyć, że klient nie jest bezpośrednio związany ani z obiektem Command, ani z obiektem inicjującym jego wywołanie, czyli Invoker. Widzi jedynie odbiorcę wyników operacji – obiekt Receiver.


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