Wpisany przez Kamil Dworak,
22 grudnia 2010 10:32
Pyłek (ang. flyweight) - strukturalny wzorzec projektowy. Stosowany do tworzenia bardzo dużej liczby obiektów (niewiele się różniących lub identycznych), którymi to będziemy mogli zarządzać (sterować) w sposób jednolity. Wzorzec tworzy jedną jedyną instancje danego obiektu. Wszystko opiera się na współdziałaniu, polegającym na modyfikacji atrybutów tego obiektu (przekazujemy do niego tylko to co uległo zmianie). Efektem takiej pracy jest znaczne zmniejszenie zapotrzebowania naszej aplikacji na pamięć (zamiast całej masy podobnych, jak nie identycznych, obiektów, przechowujemy tylko jedna instancję). Jedyną wadą stosowania tego wzorca jest spadek wydajności aplikacji.
- tworzymy interfejs Posilek, który będzie implementowany przez klasę Pizza, z której to zostanie utworzona pojedyncza instancja,
- implementujemy klasę modyfikującą obiekt, tj. klasę Zmiana. Dzięki niej będziemy sterować zachowaniem obiektu, przy pomocy klas dziedziczących (Sos, Ser),
- klasy podrzędne dekorują metodę dawajNazwe() (oczywiście można by tutaj nadać jej całkowicie inne działanie, zamiast dekorowania),
- w main`ie możemy już odpowiednio sterować naszym "posilkiem". Efekty widzimy na ekranie.
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Kamil Dworak | C# | Visual Studio 2008 | .cs | .cs | ***** / 11 |
Kamil Dworak | Java | .java | .java | ***** / 9 |
Poprawiony: 22 grudnia 2010 10:35
Flywheight polega na tym że jeśli potrzebujesz dużą ilość obiektów mających sporo wspólnych danych, to wszystkie te wspólne dane wyodrębniasz do jednej instancji przekazywanej w runtime do nowo tworzonych obiektów w taki sposób że wszystkie dzielą tą samą instancję wspólnych danych, mając tylko dane unikalne dla nich samych. Pozwala to oszczędzić RAM zużywany przez powtarzające się dane, kosztem zwiększonego narzutu czasu na każde odwołanie do współdzielonych danych