This book teaches you the real concepts every OO programming class should focus on and that contribute to decoupled and highly cohesive object oriented designs, instead of focusing, like others, on patterns as recipes you can apply without fully understanding the qualities they were created to bring.
This book will help you to: create designs using building blocks that have a single responsibility, minime dependencies in them, create flexible, trustworthy and re-usable interfaces, properly use inheritance and understand when you should do, and much more.
This book will help you realise why the gang of four patterns bring the qualities they do to the problems they were created to solve. You will understand the principles behind them.
Don't let the word "Ruby" in this book put you off. This book serves as general object oriented design book, and if you have experience in statically typed languages, it will also allow you to realise the extra constructs necessary on them to essentially achieve the same level of decoupling that Ruby naturally allows.
Easy to read. Good examples. Small, concise and straight to the point!