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
Wzorzec wyróżnia następujące elementy: - klasa abstrakcyjna reprezentująca pojedyncze obiekty Leaf, jak i kontenery tych obiektów. - typ prosty - nie ma potomków. - 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. Nowsze opisy umieszczają te metody tylko w klasie Composite.
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
Podobne wzorce Łańcuch zobowiązań, pyłek.
Zobacz też
dekorator pyłek iterator odwiedzający
Przypisy
Bibliografia
Linki zewnętrzne Szczegółowy opis wzorca wraz z przykładami
Kategoria:Wzorce projektowe