Composite

Descrição:

Compor objetos em estruturas de árvore para representar hierarquias parciais. O Composite permite aos clientes tratar objetos individuais e composições de objetos uniformemente.

Diagrama de Classes genérico do padrão:

Exemplo:

O exemplo do livro cria um menu, onde o cliente pode fazer os pedidos. O código mostra um menu, onde existe o nome e descrição para cada produto, onde o MenuComponent será a ideia para cada componente, e o Menu será a implementação e terá a ideia de adicionar e remover folhas na árvore, que é feita pelos métodos add() e remove(). Como exemplo, foi criado a classe Diner, para adicionar ao menu.

Diagrama de Classes do exemplo:

Ver código fonte no Github