Design Patterns is a modern classic in the literature of object-oriented development, offering timeless and elegant solutions to common problems in software design. It describes patterns for managing object creation, composing objects into larger structures, and coordinating control flow between objects.
https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612

