One of the best books about OO design that I know of is Corey Haines' "Understanding the Four Rules of Simple Design." It's also good because it teaches you about test-driven development.
Other books that
you should read for many insights about good design include Martin Fowler's first edition of "Refactoring: Improving the Design of Existing Code" which has examples in Java (the newer 2nd edition uses JavaScript) and Robert Martin's "Clean Code" and "Agile Software Development: Principles, Practices, and Patterns" (also known as the PPP book) where he discusses
SOLID design principles. The PPP book also has in its appendix all of
Jack Reeves' essays on why you should treat code as design, a very important idea to understand if you're going to be a good programmer, in my opinion.