Zpo-5-wyk-Slajd19: 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:
==Przykład: Inline Temp==
==Pool of Objects: uczestnicy==


[[Image:zpo-5-wyk-Slajd19.PNG|Przykład: Inline Temp]]
[[Image:zpo-5-wyk-Slajd19.PNG|Pool of Objects: uczestnicy]]




Zmiana struktury programu może stanowić dla niego ogromne zagrożenie, jeżeli po jej zakończeniu będzie on działał inaczej. Dlatego najistotniejszym (i najtrudniejszym do spełnienia) warunkiem skutecznej i efektywnej refaktoryzacji jest zapewnienie, że nie wprowadzi ona do oprogramowania zmian w jego zachowaniu.
Najważniejsze dwie funkcje obiektu Pool to zdefiniowanie punktu dostępu (zarówno tworzenia, jak i zwrotu) do obiektów typu ReusableObject, oraz zarządzanie cyklem ich życia. Cykl życia produktu składa się zwykle z fazy inicjalizacji, obsługi i finalizacji. Ponieważ klient oczekuje produktu gotowego do natychmiastowego użytku, dlatego fazy inicjalizacji i finalizacji są pod kontrolą obiektu Pool.  


Rozpatrując prosty przykład przekształcenia polegającego na rozwinięciu zmiennej tymczasowej, łatwo zauważyć, że może ono spowodować nieprawidłowe zachowanie programu. Występująca w pierwotnej wersji wielokrotnie powtarzająca się instrukcja ++i, po wyłączeniu do zmiennej  tymczasowej, jest wykonywana tylko raz. Jednak w w efekcie wartości pól tablicy ''tab'' będą różne od oczekiwanych i pierwotnych.
Obiekt ReusableObject musi posiadać zdefiniowany cykl życia: zestaw metod odpowiednio modyfikujących jego stan. Najważniejszą cechą tego obiektu jest możliwość jego ponownego użycia przez innego klienta.


Zatem nawet proste przekształcenie, intuicyjne i zrozumiałe, może stanowić problem. Warto zastanowić się, jaki element jest jego faktyczną przyczyną, skoro wyłączenie wyrażenie postaci np. i+1 nie spowoduje zmiany zachowania programu..
Klient żąda obiektu ReusableObject za pomocą obiektu Pool i w ten sam sposób zwalnia przydzielony obiekt.
 
Jest nią efekt uboczny powodowany przez wyłączaną instrukcję: zmiana wartości zmiennej ''i'' wewnątrz wyłączanego wyrażenia. Zatem to przekształcenie jest poprawne tylko wówczas, gdy wyrażenie wyłączane do zmiennej nie zmienia stanu systemu, w szczególności nie modyfikuje wartości żadnej ze zmiennych.




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

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

Pool of Objects: uczestnicy

Pool of Objects: uczestnicy


Najważniejsze dwie funkcje obiektu Pool to zdefiniowanie punktu dostępu (zarówno tworzenia, jak i zwrotu) do obiektów typu ReusableObject, oraz zarządzanie cyklem ich życia. Cykl życia produktu składa się zwykle z fazy inicjalizacji, obsługi i finalizacji. Ponieważ klient oczekuje produktu gotowego do natychmiastowego użytku, dlatego fazy inicjalizacji i finalizacji są pod kontrolą obiektu Pool.

Obiekt ReusableObject musi posiadać zdefiniowany cykl życia: zestaw metod odpowiednio modyfikujących jego stan. Najważniejszą cechą tego obiektu jest możliwość jego ponownego użycia przez innego klienta.

Klient żąda obiektu ReusableObject za pomocą obiektu Pool i w ten sam sposób zwalnia przydzielony obiekt.


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