In this chapter, we covered seven of the most popular structural patterns. These help you design abstractions, objects, and their relationships in a maintainable and efficient way.
Integrating foreign components with adapters, as well as using decorators to enhance object features and behaviors without cluttering their interfaces, will help when cleaning up existing code bases. When building APIs and public-facing systems, facades and proxy patterns can help couple complex subsystems and hide their complexity. You can easily introduce external implementations using the bridge pattern.
That concludes this chapter on building sound program structures. Next, we'll look at behavioral patterns—or, as it may be put, the art of communicating between different components.