Benefits:
• It defines class hierarchies consisting of primitive and complex objects.
• It makes it easier for you to add new kinds of components.
• It provides the flexibility of structure with a manageable interface.
Applicable Scenarios:
• You want to represent a full or partial hierarchy of objects.
• You want clients to be able to ignore the differences between the varying objects in the hierarchy.
• The structure is dynamic and can have any level of complexity: for example, using the Composite view from the J2EE Patterns Catalog, which is useful for portal applications.