I have read "Java Program Design" by Edward Sciore during studying an undergraduate course in Java OOP. It was not in the list of recommended books, and I selected it due to an availability.
Advantages: The book is a solid introduction to OOP principles and is written in a good academic manner. The book uses the same example (banking app) and the author adds new features and refactors the app according to new concepts introduced. I found this approach much better than a plenty of un-connected code snippets in other sources.
However, there is a number of disadvantages. In my opinion last 2 chapters (observers and MVC) were added just to increase page count. These topics require a separate book and I found that their coverage is not sufficient and misleading.
To sum up, the title is a good supplementary reading for college level OOP course, but should not be used as a single learning material for the topic.