Zpo-7-wyk-Slajd10: 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(1)==
==Flyweight: cel==


[[Image:zpo-7-wyk-Slajd10.PNG|Przykład(1)]]
[[Image:zpo-7-wyk-Slajd10.PNG|Flyweight: cel]]




Przekształcenie polega na zaimplementowaniu dwóch metod: ''equals'' ''()'' oraz ''hashCode'' ''().'' Metoda ''equals'' ''()'' przyjmuje jako argument obiekt klasy Object i traktuje go jak inny obiekt własnej klasy (w tym przypadku będzie to DziałKatalogu). Porównanie własnego obiektu z obiektem przekazanym jako argument może być zrealizowane np. poprzez porównanie prefiksów opisujących działu książek, które są jedynym polem w tej klasie. Metoda ''hashCode'' ''()'' jest zaimplementowana podobnie – poprzez delegację do identycznej metody w obiekcie prefiksu.
Flyweight jest wzorcem opisującym zasadę współdzielenia obiektów w sytuacjach, gdy są one potrzebne niejednocześnie i tylko przez pewien okres czasu. Flyweight różni się od wzorca Pool of Objects, ponieważ pozwala współdzielić obiekty stanowe, których dane zależą od kontekstu. Wykorzystanie wzorca ma na celu przede wszystkim podniesienie wydajności aplikacji przez ograniczenie liczby obiektów oraz wydzielenie z nich stanu zewnętrznego (specyficznego dla każdej instancji i zależnego od kontekstu) oraz zawarteg w nich tzw. stanu wewnętrznego (współdzielonego przez wszystkie instancje).  


Ostatnim krokiem jest zmiana kwalifikatora dostępu do konstruktora na public.
Na przykład litery w procesorze tekstu są reprezentowane przez obiekty klasy Litera, w której stanem wewnętrznym jest kod znaku, a zewnętrznym – krój litery, jej wielkość, dekoracje etc.
 
Warto pamiętać, że otrzymany obiekt-wartość nie może być już porównywany za pomocą operatora porównania, dlatego wyrażenia dotyczące porównania powinny również zostać dostosowane do tej zasady. Przedstawione dwa przypadki testowe pokazują ideę tego przekształcenia: porównanie za pomocą metody ''equals'' ''()'' nadal jest poprawne, natomiast za pomocą operatora ==  już nie.  




[[zpo-7-wyk-Slajd9 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd11 | Następny slajd >>]]
[[zpo-7-wyk-Slajd9 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd11 | Następny slajd >>]]

Aktualna wersja na dzień 19:15, 4 lis 2006

Flyweight: cel

Flyweight: cel


Flyweight jest wzorcem opisującym zasadę współdzielenia obiektów w sytuacjach, gdy są one potrzebne niejednocześnie i tylko przez pewien okres czasu. Flyweight różni się od wzorca Pool of Objects, ponieważ pozwala współdzielić obiekty stanowe, których dane zależą od kontekstu. Wykorzystanie wzorca ma na celu przede wszystkim podniesienie wydajności aplikacji przez ograniczenie liczby obiektów oraz wydzielenie z nich stanu zewnętrznego (specyficznego dla każdej instancji i zależnego od kontekstu) oraz zawarteg w nich tzw. stanu wewnętrznego (współdzielonego przez wszystkie instancje).

Na przykład litery w procesorze tekstu są reprezentowane przez obiekty klasy Litera, w której stanem wewnętrznym jest kod znaku, a zewnętrznym – krój litery, jej wielkość, dekoracje etc.


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