Recommended with caution only to the thinking OO designer.
This is probably the hardest book I have ever had to review. The idea is to teach the elements of functional programming in Java and show how that leads to some well-known design patterns, in particular the Visitor pattern. However, it is strangely constructed, as a dialogue between the authors and an imaginary reader and it is quirky in style and sometimes rather obscure.
Some aspects of this book are so annoying I would almost like to dismiss it out of hand, except that there is something in it that works. The approach is so different to that adopted in other books that it does have a stimulating effect on the mental processes. I would have to say that it really is only going to appeal to the open- minded, preferably those who have already read widely on OO design.
This book will not teach Java nor does it have any useful reference material. What it may do is help to crack some design problems by leading you to think about possible alternative approaches. But you have to read the entire book from start to finish before it really gels, so plan to have the time available. Recommended with caution only to the thinking OO designer.