An object that contains other objects that behaves as if were those objects.

i.e. a directory that contains files

Implementation Choices

Type Safety

Only define child-related operations in the Composite class

Uniformity

Include all child-related operations in the Component interface