For me, this book was completely different than the software engineering books that I read before. Books in the Head First series like this book try to teach you using multiple ways including: pictures (with text), redundancy (say the same in different (visual) ways), a conversational style, activities/exercises/challenges/questions etc. That doesn’t make it a book that will please everybody but I think it will work very well for a lot of people: it’s fun to read, lets you think and, by using redundancy in an attractive way, lets you absorb the information well.
The code in the book is written in Java but as a C++ programmer this didn’t disturb me. It doesn’t explain object-oriented programming but focusses on design patterns. It’s a book to learn or refresh design patterns; it’s not a reference book.
The most important design patterns are extensively discussed, such as the observer pattern, the decorator pattern, the factory pattern, the singleton pattern, the command pattern, the adapter and facade patterns, the template method pattern, the iterator and composite patterns, the state pattern, the proxy pattern, compound patterns.
Patterns that are described in far less detail are bridge, builder, chain of responsibility, flyweight, interpreter, mediator, memento, prototype and visitor.
As it is a visual book it will not work well on a black and white e-reader if you prefer that to save the environment; using the pdf on a tablet works well.
As this is a second edition, I tried to find out what has changed from looking at both tables of contents. It doesn’t look like it justifies buying the second edition if you already have the first one.
I’m definitely recommending it if you want to learn design patterns and you are not put off by its style, which won’t be for everybody.