The following patterns are concerned with defining relationships between classes and objects:
- Adapter: A pattern for providing a match between two different classes
- Bridge: A pattern for allowing the implementation details of a class to be replaced without requiring the class to be modified
- Composite: Used to create a hierarchy of classes in a tree structure
- Decorator: A pattern for replacing the functionality of a class at runtime
- Facade: A pattern used to simplify complex systems
- Flyweight: A pattern used to reduce the resource usage for complex models
- Proxy: A pattern used to represent another object allowing for an additional level of control between the calling and called objects