Ease the design by identifying a simple way to realize relationships between entities. i.e Helps the classes & objects to be composed together to form larger structures and provides an uniform abstraction of different interfaces.
Adapter : An adapter allows classes to work together that normally could not because of incompatible interfaces, by providing its interface to clients while using the original interface.
Bridge : Decouple an abstraction from its implementation so that the two can vary independently
Composite : Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.
Decorator : Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending functionality.
Facade : Allows a simplified interface for large body of code or services.
Flyweight : A Flyweight is an object that minimizes memory use by sharing as much data as possible with other similar objects; it is a way to use objects in large numbers when a simple repeated representation would use an unacceptable amount of memory
Proxy : A proxy, in its most general form, is a class functioning as an interface to something else. The proxy could interface to anything: a network connection, a large object in memory, a file, or some other resource that is expensive or impossible to duplicate.