Pyłek to strukturalny wzorzec projektowy umożliwiający obsługę wielkich ilości obiektów przy jednoczesnej oszczędności pamięci.
Wzorzec Pyłek umożliwia zmniejszenie wymogów w zakresie pamięci RAM poprzez współdzielenie części opisu stanu przez wiele obiektów. Innymi słowy Pyłek przechowuje w pamięci podręcznej te dane, które są wspólne dla wielu różnych obiektów.
Przykłady użycia: Wzorzec Pyłek ma jedno zastosowanie: minimalizacja zużycia pamięci. Możesz póki co zignorować ten wzorzec jeśli twój program nie cierpi na niedostatek pamięci.
Przykłady użycia wzorca Pyłek w głównych bibliotekach Java:
Identyfikacja: Pyłek można poznać po obecności metody kreacyjnej zwracającej obiekty z pamięci podręcznej, zamiast nowo utworzonych.
Renderowanie lasu
W poniższym przykładzie renderujemy las (1 000 000 drzew)! Każde z drzew będzie reprezentowane przez jeden obiekt posiadający pewien stan (współrzędne, tekstura, itd.). Mimo że program wykonuje swoje zadanie, to zużywa przy tym mnóstwo pamięci RAM.
Przyczyna jest prosta: zbyt wiele obiektów-drzew zawiera identyczne dane (nazwa, tekstura, barwa). Możemy więc zastosować wzorzec Pyłek by przenieść te elementy stanu do osobnych obiektów-pyłków (klasa TreeType). Dzięki temu nie musimy przechowywać tych samych danych w tysiącach obiektów Tree, a jedynie odniesienie do odpowiedniego obiektu-pyłka zawierającego dany zestaw wartości.
Z punktu widzenia kodu klienta nie będzie widać zmiany, bo mechanizm odpowiadający za ponowne wykorzystanie pyłków jest umieszczony w fabryce pyłków.
trees
trees/Tree.java: Zawiera unikalny stan każdego drzewa
trees/TreeType.java: Zawiera stan współdzielony przez wiele drzew
trees/TreeFactory.java: Hermetyzuje złożoność tworzenia pyłków