Zpo-9-wyk-Slajd15: 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:
==Singleton: implementacja 2PL ==
==Replace Parameter with Explicit Method==


[[Image:zpo-9-wyk-Slajd15.PNG|Singleton: implementacja 2PL ]]
[[Image:zpo-9-wyk-Slajd15.PNG|Replace Parameter with Explicit Method]]




W języku Java implementacja tego wzorca napotyka na wiele trudności ze względu na sposób wykonywania programów i konstrukcję maszyny wirtualnej, w której są uruchamiane programy. M.in. w programie wielowątkowym istnieje możliwość, że wskutek przerwania wykonywania metody w momencie sprawdzania, czy instancja obiektu została już utworzona, kontrolę przejmie drugi wątek, który utworzy swoją własną instancję.  
Problem rozwiązywany przez to przekształcenie dotyczy metod, których zachowanie zależy od wartości jednego z parametrów. Rozwiązanie polega na utworzeniu osobnych wersji metody dla każdej wartości tego parametru (jeżeli jest ich kilka) i właściwym ich nazwaniu.


W celu rozwiązania tego problemu można zastosować zmodyfikowaną wersję algorytmu blokowania dwufazowego (2PL). Zakłada ona, że istnienie instancji obiektu jest sprawdzane dwukrotnie: na zewnątrz i wewnątrz bloku synchronizacji, w którym instancja ta jest tworzona. Taka konstrukcja, mimo pewnego narzutu związanego z synchronizacją wątków, pozwala uniknąć utworzenia wielu instancji klasy.
Przekształcenie zaczyna się od utworzenia nowych metod, które w nazwach będą zawierały jedną z wartości usuwanego parametru. Następnie z instrukcji warunkowej należy skopiować zawartość właściwej gałęzi, a w jej miejscu umieścić wywołanie nowej metody. Kolejnym krokiem jest aktualizacja klientów, aby korzystali z nowych wersji metod, i usunięcie nieużywanej obecnie oryginalnej wersji metody.




[[zpo-9-wyk-Slajd14 | << Poprzedni slajd]] | [[zpo-9-wyk-toc|Spis treści ]] | [[zpo-9-wyk-Slajd16 | Następny slajd >>]]
[[zpo-9-wyk-Slajd14 | << Poprzedni slajd]] | [[zpo-9-wyk-toc|Spis treści ]] | [[zpo-9-wyk-Slajd16 | Następny slajd >>]]

Aktualna wersja na dzień 18:04, 4 lis 2006

Replace Parameter with Explicit Method

Replace Parameter with Explicit Method


Problem rozwiązywany przez to przekształcenie dotyczy metod, których zachowanie zależy od wartości jednego z parametrów. Rozwiązanie polega na utworzeniu osobnych wersji metody dla każdej wartości tego parametru (jeżeli jest ich kilka) i właściwym ich nazwaniu.

Przekształcenie zaczyna się od utworzenia nowych metod, które w nazwach będą zawierały jedną z wartości usuwanego parametru. Następnie z instrukcji warunkowej należy skopiować zawartość właściwej gałęzi, a w jej miejscu umieścić wywołanie nowej metody. Kolejnym krokiem jest aktualizacja klientów, aby korzystali z nowych wersji metod, i usunięcie nieużywanej obecnie oryginalnej wersji metody.


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