Structural Patterns Design Patterns: Elements of Reusable Object-Oriented Software Sections: Adapter Bridge Composite Decorator Facade Flyweight Proxy