For me, the canonical reference "Design Patterns: Elements of Reusable Object-Oriented Software" continues to be the best book. But, it may be a bit dense for inexperienced developers. If that's your case, I suggest you read "Head-First Design Patterns" first. This book is more introductory and will help you understand the other book better.
You may also want to have a look at:
refactoring.guru/design-patterns