Although design patterns simply describe solutions to problems, they tend to emphasize solutions that promote reusability and flexibility. To achieve this, they manifest some key object-oriented design principles. We will encounter some of them in this chapter and in more detail throughout the rest of the book.
This chapter will cover the following topics:
Composition: How to use object aggregation to achieve greater flexibility than you could with inheritance alone
Decoupling: How to reduce dependency between elements in a system
The power of the interface: Patterns and polymorphism ...