Kompozyt (wzorzec projektowy)
![]() | Zobacz też: inne znaczenia słowa „kompozyt”. |
![]() | 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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Composite_UML_class_diagram_%28fixed%29.svg/220px-Composite_UML_class_diagram_%28fixed%29.svg.png)
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
- ↑ Gamma i in. 2010 ↓, s. 171.
- ↑ David Geary: A look at the Composite design pattern. [dostęp 2015-09-15]. [zarchiwizowane z tego adresu (2013-10-31)]. (ang.).
- ↑ Gamma i in. 2010 ↓, s. 173.
- ↑ 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 kreacyjne |
|
---|---|
Wzorce strukturalne |
|
Wzorce czynnościowe |
|
- Zobacz także: Inżynieria oprogramowania
- Programowanie obiektowe