sets out to overcome that vexing gap between the abstract concept of a pattern and how exactly you use it in real life
This interesting, if rather pretentiously titled, book sets out to overcome that vexing gap between the abstract concept of a pattern and how exactly you use it in real life code. The language used for the code is Java, but a competent programmer should be able to cope with the code, even if not a Java expert.
The book uses two full-length programs to achieve its ends. The first is a vastly over-engineered program of Conway's Game of Life, and the second is a production grade embedded SQL implementation. Between them the programs implement all the Gang of Four (GoF) patterns.
I found this book useful. It is a while since I last looked at the GoF book, and this raised enough issues to make me want to go back and take a fresh look from a different angle. I learned two important things from reading the book.
The first was the usefulness of patterns in communicating between programmers. Using patterns can be a very succinct and accurate way of communicating your intent and requirements.
The second was that an object in a program can have different roles within several different patterns. I guess I had known this, but not really thought about it before, and certainly not articulated it.
I also picked up a lot of useful tips and techniques from reading through the code presented in the book, and the introduction on objects contained some interesting ideas that I had not really considered in any depth before.
I have only one caveat. The Life program is on the verge of being so complex as to defeat its own purpose. It would probably have been better to have had three different programs rather than trying to stuff so many patterns into one program. There is a suggestion at the end of the section that the program is an example of the problems that can arise with hard pattern oriented design. Nice try, but no cigar, Mr Holub!
A useful adjunct to the GoF book.