Zpo-6-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:
==Move Method==
==State: przykład cd.==


[[Image:zpo-6-wyk-Slajd42.PNG|Move Method]]
[[Image:zpo-6-wyk-Slajd42.PNG|State: przykład cd.]]




Przekształcenie polegające na przeniesieniu metody również dotyczy dwóch klas związanych inaczej niż poprzez dziedziczenie. Jeżeli metoda częściej odwołuje się do metod obcej klasy (jest to oznaka przykrego zapachu Feature Envy), wówczas powinna być przeniesiona do niej klasy.
Aby zastosować wzorzec State w tym przypadku, należy zdefiniować interfejs AccountState oraz klasy reprezentujące stan aktywności i nieaktywności rachunku. Ten interfejs i implementujące go klasy posiadają metodę ''credit'' ''(),'' której zachowanie jest różne w zależności od klasy: AccountOpen realizuje tę metodę bezwarunkowo, natomiast AccountClosed – również bezwarunkowo ją blokuje.
 
Refaktoryzacja ta jest szczególnym przypadkiem przekształcenia Move Field, ponieważ pomija krok związany z hermetyzacją pola. Dodatkowo należy zwrócić uwagę, czy przenoszona metoda nie jest wykorzystywana polimorficznie, co uniemożliwi usunięcie jej w klasie źródłowej.




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

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

State: przykład cd.

State: przykład cd.


Aby zastosować wzorzec State w tym przypadku, należy zdefiniować interfejs AccountState oraz klasy reprezentujące stan aktywności i nieaktywności rachunku. Ten interfejs i implementujące go klasy posiadają metodę credit (), której zachowanie jest różne w zależności od klasy: AccountOpen realizuje tę metodę bezwarunkowo, natomiast AccountClosed – również bezwarunkowo ją blokuje.


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