Zpo-5-wyk-Slajd42: 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:
==Lazy Class==
==Command: przykład==


[[Image:zpo-5-wyk-Slajd42.PNG|Lazy Class]]
[[Image:zpo-5-wyk-Slajd42.PNG|Command: przykład]]




Bezużyteczna klasa  jest przeciwieństwem klasy nadmiernie rozbudowanej. Jeżeli klasa nie posiada żadnej odpowiedzialności lub jest ona ograniczona do pojedynczych drobnych funkcji, warto zastanowić się nad jej modyfikacją. Klasa bezużyteczna jest często blisko powiązana z innym przykrym zapachem – Data Class. O ile jednak w ostatnim przypadku klasa przechowuje pewne dane, o tyle klasa bezużyteczna nie posiada określonego i spójnego zakresu odpowiedzialności.
Bank zarządza grupą obiektów Account reprezentujących rachunki bankowe. Operacje bankowe, wykonywane na rachunkach, są implementacjami interfejsu Operation, posiadającego metodę ''execute'' ''().'' Jej implementacja zależy od rodzaju operacji, dlatego w przypadku obiektu InterestChange będzie ona zmieniała stopę procentową, a w przypadku obiektu Transfer – dokonywała przelewu. Ponieważ każda operacja wymaga innych parametrów, dlatego są one przekazywane w konstruktorze poszczególnej klasy, a nie bezpośrednio w metodzie ''execute'' ''().'' W tym przykładzie rolę obiektu Invoker pełni bank, ponieważ on wykonuje metodę ''execute'' ''(),'' a rolę przedmiotu polecenia (obiektu Receiver) – obiekt Account.
 
Usuwanie tego zapachu może podążać dwiema drogami: zwiększając jej odpowiedzialność kosztem współpracujących z nią klas klienckich lub stopniowo ją ograniczając, a następnie usuwając z systemu. W przypadku dziedziczenia klasa jest usuwana poprzez przeniesienie jej funkcji do nadklasy i/lub podklas, natomiast w pozostałych przypadkach jej składowe są przesuwane do klientów poprzez delegacje.




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

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

Command: przykład

Command: przykład


Bank zarządza grupą obiektów Account reprezentujących rachunki bankowe. Operacje bankowe, wykonywane na rachunkach, są implementacjami interfejsu Operation, posiadającego metodę execute (). Jej implementacja zależy od rodzaju operacji, dlatego w przypadku obiektu InterestChange będzie ona zmieniała stopę procentową, a w przypadku obiektu Transfer – dokonywała przelewu. Ponieważ każda operacja wymaga innych parametrów, dlatego są one przekazywane w konstruktorze poszczególnej klasy, a nie bezpośrednio w metodzie execute (). W tym przykładzie rolę obiektu Invoker pełni bank, ponieważ on wykonuje metodę execute (), a rolę przedmiotu polecenia (obiektu Receiver) – obiekt Account.


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