Composite Design Pattern The composite design pattern is intended more for fitness for purpose than fitness for future. It helps with iterating through tree structures composed of heterogeneous components, and interacting with the components in a consistent manner. It is particularly useful for avoiding the necessity of discriminating between branch nodes and leaf nodes in the tree. Adding functions is difficult, because they need to be added to every class in the hierarchy. It is not useful to add a method to an individual class, since all clients should be interacting with the composite through the composite interface However, it is easy to add classes to the hierarchy. They just need to conform to the composite interface.