Logo David Burdelak
Słownik · Programowanie i wzorce projektowe

Co to jest wzorzec Dekorator?

Ostatnia aktualizacja:

Dekorator to wzorzec strukturalny pozwalający dynamicznie rozszerzać możliwości obiektu bez zmieniania jego klasy ani tworzenia podklas. Obiekt jest opakowywany w „dekorator” o tym samym interfejsie, który przekazuje wywołania dalej i dodaje własne działania przed lub po nich.

Jak działa dekorator?

Dekoratory można zagnieżdżać, np. obiekt zapisujący dane do pliku opakowuje się w dekorator kompresji, a ten w dekorator szyfrowania. Każdy robi jedną rzecz, a kolejność składania decyduje o wyniku. Działa to jak nakładanie warstw ubrań.

Zastosowania

Dodawanie logowania, pamięci podręcznej, kontroli uprawnień lub pomiaru czasu do istniejących usług bez zmiany ich kodu. W wielu językach funkcjonują też dekoratory na poziomie składni, np. w Pythonie i TypeScript, oraz middleware w aplikacjach webowych, który działa na podobnej zasadzie.

Dekorator a dziedziczenie

Dziedziczenie wiąże rozszerzenie na stałe z klasą. Dekorator pozwala komponować zachowania w czasie działania programu i unika eksplozji podklas dla każdej kombinacji funkcji. Ceną jest większa liczba małych obiektów.

Ma to bezpośredni związek z praktykami, na których opiera się pisanie czytelnego i zrozumiałego kodu.

Zobacz w praktyce

Powiązane pojęcia

Wszystkie hasła z kategorii Programowanie i wzorce projektowe