Welcome to the OO Design & Patterns FAQ!
Question: When will the Java 5.0 edition be available?
Answer: The second edition
(with the Golden Gate bridge
cover) is now available.
Question: Why are you using Java Swing to motivate design
patterns?
Answer: In my experience, many students have a tough time
memorizing and recognizing the various design patterns. Swing makes
them
concrete:
- DECORATOR: Scroll bars
- COMPOSITE: Containers and components
- STRATEGY: Layout managers
- . . .
Question: Why are you using inner and anonymous classes?
Answer: Everyone else does it--it is an idiom that all
professional Java programmers need to master. (Just look at the library
source code, e.g. grep for "new
[
]*[A-Za-z0-9_]*[ ]*()[ ]*{" in the Java 2 SDK source, and you'll
find hundreds of examples.)
I tell my beginning students:
- Copy and paste the inner class code so you get the syntax right
- You can access any object that seems to be in scope. If the
compiler complains about a missing final,
then add it.
- If you get confused, give names to classes and objects.
With advanced students, I draw a parallel to closures in Scheme and
JavaScript.
My students really like the access to variables from the enclosing
scope. It greatly reduces programming tedium.
Question: How does this book differ from Braude's book?
Answer: Braude's book seems more suitable for advanced
students. It covers more material (OOA, .NET components, all GoF
patterns), at a much faster pace.
Question: Why doesn't the book have a hard cover?
Answer: (from my editor) The decision actually has to do
with trade potential and course level. Paperbacks sell much better than
hardcovers in the trade market and we felt this book has good potential
in this market. Further, while there is very little difference in the
price to produce hardcover versus softcover, there is a perception that
softcovers are less expensive. Therefore, softcovers sell much better
at freshman and sophomore level courses. It makes little difference
whether a book is hardcover or softcover for advanced courses.