Too Long; Didn't Read
Design patterns: Elements Of Reusable Object-Oriented Software by the gang of four. The book is a reference book that I can't recommend enough. It is based on the SOLID principles before diving into the design patterns, as they are the basis of it, and focus more on the important ones that are frequently used. Each one of those principles solves a particular problem and it could be hard for beginners to remember and use them when needed. Here is a list of some of the book's design patterns and what I did to remember.