this pattern is used when we want to represent a hierarchy and we want to treat the object of the hierarchy the same way;
- Leaf - represents an individual part
- Composite - group class or container class
- Component - contains operation method that common between Leaf and Composite
image by refactoring guru