Kompozyt (wzorzec projektowy)

Zobacz też: inne znaczenia słowa „kompozyt”.
Sprzątanie Wikipedii
Ten artykuł należy dopracować:
patrz: Zalecenia edycyjne dla wzorców projektowych.
Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się w dyskusji tego artykułu.
Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu.

Kompozyt – strukturalny wzorzec projektowy, którego celem jest składanie obiektów w taki sposób, aby klient widział wiele z nich jako pojedynczy obiekt.

Przykładowe zastosowanie

Wzorzec ten stosuje się, gdy wygodniej jest korzystać z pewnych operacji dla danego obiektu w ten sam sposób jak dla grupy obiektów, np. rysując na ekranie prymitywy lub obiekty złożone z prymitywów; zmieniając rozmiar zarówno pojedynczych prymitywów jak i obiektów złożonych z prymitywów (z zachowaniem proporcji).

Struktura wzorca

Diagram klas wzorca Kompozyt

Wzorzec wyróżnia następujące elementy:

  • Component - klasa abstrakcyjna reprezentująca pojedyncze obiekty Leaf, jak i kontenery tych obiektów.
  • Leaf - typ prosty - nie ma potomków.
  • Composite - przechowuje obiekty proste (Leaf), implementuje zachowanie elementów, które zawiera.

Composite jak i Leaf dziedziczy po tym samym interfejsie co pozwala na dostęp do obiektów prostych w ten sam sposób jak do grupy tych obiektów. Użytkownik może przeprowadzać operacje na pojedynczym obiekcie, jak i na grupie obiektów reprezentowanych tym wzorcem. Zgodnie z oryginalnym opisem wzorca, zarówno klasa Component jak i Composite zawiera metody operujące na komponentach podrzędnych, które są przechowywane w klasie Composite[1]. Nowsze opisy umieszczają te metody tylko w klasie Composite[2].

Konsekwencje stosowania

  • Umożliwia definiowanie hierarchii z obiektów prostych i złożonych
  • Upraszcza kod klientów
  • Ułatwia dodawanie komponentów nowego rodzaju
  • Może sprawić, że projekt stanie się zanadto ogólny[3]

Podobne wzorce

Łańcuch zobowiązań, pyłek[4].

Zobacz też

Zobacz galerię związaną z tematem: Kompozyt (wzorzec projektowy)
  • dekorator
  • pyłek
  • iterator
  • odwiedzający

Przypisy

  1. Gamma i in. 2010 ↓, s. 171.
  2. David Geary: A look at the Composite design pattern. [dostęp 2015-09-15]. [zarchiwizowane z tego adresu (2013-10-31)]. (ang.).
  3. Gamma i in. 2010 ↓, s. 173.
  4. Gamma i in. 2010 ↓, s. 180.

Bibliografia

  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Inżynieria oprogramowania: Wzorce projektowe. Wyd. II. WNT, 2008, s. 195-207. ISBN 978-83-204-3472-9.
  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku. Helion, 2010, s. 170-180. ISBN 978-83-246-2662-5.

Linki zewnętrzne

  • Szczegółowy opis wzorca wraz z przykładami
  • p
  • d
  • e
Wzorce projektowe według książki Design patterns autorstwa Gangu Czterech
Wzorce kreacyjne
  • Budowniczy
  • Fabryka abstrakcyjna
  • Metoda wytwórcza
  • Prototyp
  • Singleton
Wzorce strukturalne
  • Adapter
  • Dekorator
  • Fasada
  • Kompozyt
  • Most
  • Pełnomocnik
  • Pyłek
Wzorce czynnościowe
  • Interpreter
  • Iterator
  • Łańcuch zobowiązań
  • Mediator
  • Metoda szablonowa
  • Obserwator
  • Odwiedzający
  • Pamiątka
  • Polecenie
  • Stan
  • Strategia