|
|
Linia 1: |
Linia 1: |
| ==Pool of Objects: konsekwencje== | | ==Agenda== |
|
| |
|
| [[Image:zpo-9-wyk-Slajd20.PNG|Pool of Objects: konsekwencje]] | | [[Image:zpo-9-wyk-Slajd20.PNG|Agenda]] |
|
| |
|
|
| |
|
| Dzięki wykorzystaniu wzorca Pool of Objects, obiekty ReusableObject są tworzone w ograniczonej liczbie instancji i mogą być następnie wielokrotnie wykorzystywane. Pozwala to usunąć istotny koszt związany z tworzeniem obiektów. Jest on szczególnie dokuczliwy, gdy liczba żądań jest duża, a czas wykorzystania obiektu bardzo krótki, np. w kontenerach Java Servlets obsługujących żądania HTTP. Do każdego żądania jest przydzielana para obiektów reprezentujących żądanie i odpowiedź HTTP. Skalowalność wymaga, aby liczba jednoczesnych żądań wynosiła przynajmniej kilkadziesiąt, czego nie dałoby się osiągnąć bez efektywnego mechanizmu zarządzania pulą obiektów.
| | Druga grupa przekształceń dotyczy zmiennych lokalnych. Stanowią one istotny problem dla wielu przekształceń, np. Extract Method, ponieważ wymagają przekazywania ich w postaci parametrów, co niepotrzebnie zwiększa stopień powiązań między metodami. |
| | |
| Innym, często spotykanym przykładem, jest dostęp do bazy danych za pomocą interfejsów JDBC. Za każdym razem wymagane jest udostępnienie klientowi obiektu typu Connection, które na czas operacji na bazie danych musi być związane z jednym wątkiem. Utworzenie obiektu Connection jest bardzo czasochłonne, dlatego zwykle jest on umieszczany w puli, tak aby po jego wykorzystaniu przez jeden wątek mógł on trafić do niej z powrotem. Liczba jednocześnie istniejących obiektów jest konfigurowalna, tak aby zapewnić obsługę wszystkich żądań. Obiekt Pool może także wykorzystywać skomplikowane algorytmy heurystyczne w celu przewidywania zapotrzebowania na obiektu ReusableObject i dostosowywania do potrzeb liczby obiektów przechowywanych w puli.
| |
| | |
| Ponadto wzorzec ten poprawia hermetyzację obiektu ReusableObject: klient nie zajmuje się ich obsługą, a jedynie korzysta z oferowanych przez nie usług.
| |
|
| |
|
|
| |
|
| [[zpo-9-wyk-Slajd19 | << Poprzedni slajd]] | [[zpo-9-wyk-toc|Spis treści ]] | [[zpo-9-wyk-Slajd21 | Następny slajd >>]] | | [[zpo-9-wyk-Slajd19 | << Poprzedni slajd]] | [[zpo-9-wyk-toc|Spis treści ]] | [[zpo-9-wyk-Slajd21 | Następny slajd >>]] |
Aktualna wersja na dzień 18:05, 4 lis 2006
Agenda
Druga grupa przekształceń dotyczy zmiennych lokalnych. Stanowią one istotny problem dla wielu przekształceń, np. Extract Method, ponieważ wymagają przekazywania ich w postaci parametrów, co niepotrzebnie zwiększa stopień powiązań między metodami.
<< Poprzedni slajd | Spis treści | Następny slajd >>