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.
W grze Counter-Strike Terroryści i Kontrterroryści różnią się ubiorem. Upraszczając, załóżmy że każda z grup ma po jednym stroju. Informacja o ubiorze jest zawarta w obiekcie gracza, jak pokazano poniżej.
Oto struktura opisująca gracza. Widzimy, że obiekt odpowiadający strojowi jest zagnieżdżony wewnątrz tej struktury:
A teraz załóżmy, że mamy 5 terrorystów i 5 kontrterrorystów, czyli w sumie 10 graczy. W kwestii ubioru są dwie opcje:
Każdy z 10 obiektów graczy tworzy osobny obiekt ubioru i przechowuje go. Stworzone zostanie więc 10 obiektów reprezentujących stroje.
Tworzymy tylko dwa obiekty-stroje:
Jeden obiekt-strój terrorysty: Współdzielony przez 5 terrorystów.
Jeden obiekt-strój kontrterrorysty: Współdzielony przez 5 kontrterrorystów.
Widzimy więc, że w pierwszym podejściu stworzonych zostanie 10 obiektów reprezentujących ubiór, zaś w drugim jedynie 2. To właśnie drugie podejście jest ideą wzorca projektowego Pyłek. Oba obiekty-stroje, które zostały stworzone, nazwiemy obiektami-pyłkami.
Wzorzec Pyłek zakłada tworzenie obiektów przechowujących wspólne elementy wielu innych obiektów. Tak stworzone pyłki (tu: ubiór) mogą być współdzielone przez wiele obiektów (graczy). Pozwala to drastycznie zmniejszyć liczbę obiektów opisujących stroje, a pojawienie się większej liczby graczy nie skutkuje powieleniem obiektu-stroju.
Zgodnie ze wzorcem Pyłek przechowujemy obiekty-pyłki w polu-mapie. Gdy utworzony zostanie nowy obiekt korzystający z któregoś ze strojów, mapa zwróci pyłek.
Sprawdźmy które elementy tego układu będą stanami wewnętrznymi, a które zewnętrznymi:
Stan wewnętrzny: Strój jest częścią stanu wewnętrznego, gdyż może być współdzielony przez wiele obiektów odpowiadających Terrorystom i Kontrterrorystom.
Stan zewnętrzny: Lokalizacja gracza i jego broń są częścią stanu zewnętrznego, gdyż są różne dla każdego gracza.