Structural design patterns provide different ways to create class structure; for example, this can be how we use encapsulation to create bigger objects from smaller ones. They exist to ease the design by allowing us to identify simple ways to realize these relationships between entities.
In the last chapter, we covered how creational patterns can be used to determine how objects should be created; with structural patterns, we can determine the structure and relationship between classes.
After a brief note on Agile software architecture, in this chapter we will cover the following topics:
Decorator pattern
Class Adapter pattern
Object Adapter pattern
Flyweight pattern
Composite pattern
Bridge pattern
Proxy pattern
Facade pattern