Composite (4)
Applicability
Want to represent part-whole hierarchies of objects
Want clients to be able to ignore the difference between
compositions of objects and individual objects.
Consequences
Whenever client code expects a primitive object, it can also
receive a composite object
Makes the client simple
Facilitates adding of new components
Can make design overly general – makes it hard to restrict the
components of a composite