Zpo-11-wyk-Slajd4: 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:
==Decorator: uczestnicy==
==Replace Type Code with Class==


[[Image:zpo-11-wyk-Slajd4.PNG|Decorator: uczestnicy]]
[[Image:zpo-11-wyk-Slajd4.PNG|Replace Type Code with Class]]




Warto zwrócić uwagę, że obiekt ConcreteComponent, aby mógł uczestniczyć w tym wzorcu, musi definiować interfejs Component, którego alternatywną implementacją są dekoratory. Ważne jest też, aby dekoratory odpowiednio delegowały swoje metody do wewnętrznych obiektów typu Component.
Przechowywanie informacji o stanie obiektu w postaci pola typu prymitywnego o zmiennej wartości jest bardzo powszechnym rozwiązaniem. Jednak w zależności od sposobu, w jaki pole reprezentujące stan wpływa na zachowanie swojego właściciela, z zagadnienia tego można wyróżnić kilka odrębnych problemów, i każdy z nich rozwiązywać za pomocą innego przekształcenia refaktoryzacyjnego.
 
Pierwsze z nich dotyczy sytuacji, gdy pole przyjmuje skończoną i dobrze określoną liczbę wartości, raczej nie zmienia wartości w trakcie swojego istnienia, oraz, co bardzo ważne, wartość pola nie wpływa na zachowanie obiektu. W związku z ostatnią cechą zmiana może zostać zrealizowana za pomocą  jednej klasy, bez konieczności definiowania podklas czy polimorficznego pokrywania metod.
 
Celem przekształcenia jest transformacja pola w nową klasę, której wartości pól będą odzwierciedlały stan właściciela tego obiektu.
 
Pierwszym krokiem zmiany jest utworzenie nowej klasy oraz dodanie do klasy oryginalnej referencji do obiektu nowoutworzonej klasy. Następnie należy dla każdej metody korzystającej z dotychczasowego pola w klasie źródłowej stworzyć jej odpowiednik korzystający z nowego pola i nowej klasy. Warto zauważyć, że w ten sposób klasa w dotychczasowej postaci może istnieć bez zmiany swojej funkcjonalności. Kolejnym krokiem jest modyfikacja klientów, tak aby korzystały z nowych metod.
 
Po zakończeniu przekształcenia, które pozwala nam hermetyzować proces zarządzania zmiennymi reprezentującymi stan, można usunąć stare, nieużywane metody.




[[zpo-11-wyk-Slajd3 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd5 | Następny slajd >>]]
[[zpo-11-wyk-Slajd3 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd5 | Następny slajd >>]]

Aktualna wersja na dzień 17:37, 4 lis 2006

Replace Type Code with Class

Replace Type Code with Class


Przechowywanie informacji o stanie obiektu w postaci pola typu prymitywnego o zmiennej wartości jest bardzo powszechnym rozwiązaniem. Jednak w zależności od sposobu, w jaki pole reprezentujące stan wpływa na zachowanie swojego właściciela, z zagadnienia tego można wyróżnić kilka odrębnych problemów, i każdy z nich rozwiązywać za pomocą innego przekształcenia refaktoryzacyjnego.

Pierwsze z nich dotyczy sytuacji, gdy pole przyjmuje skończoną i dobrze określoną liczbę wartości, raczej nie zmienia wartości w trakcie swojego istnienia, oraz, co bardzo ważne, wartość pola nie wpływa na zachowanie obiektu. W związku z ostatnią cechą zmiana może zostać zrealizowana za pomocą jednej klasy, bez konieczności definiowania podklas czy polimorficznego pokrywania metod.

Celem przekształcenia jest transformacja pola w nową klasę, której wartości pól będą odzwierciedlały stan właściciela tego obiektu.

Pierwszym krokiem zmiany jest utworzenie nowej klasy oraz dodanie do klasy oryginalnej referencji do obiektu nowoutworzonej klasy. Następnie należy dla każdej metody korzystającej z dotychczasowego pola w klasie źródłowej stworzyć jej odpowiednik korzystający z nowego pola i nowej klasy. Warto zauważyć, że w ten sposób klasa w dotychczasowej postaci może istnieć bez zmiany swojej funkcjonalności. Kolejnym krokiem jest modyfikacja klientów, tak aby korzystały z nowych metod.

Po zakończeniu przekształcenia, które pozwala nam hermetyzować proces zarządzania zmiennymi reprezentującymi stan, można usunąć stare, nieużywane metody.


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