Thanks to V S Babu, I found this great Java Idioms page.
There's enough here for a thousand posts. Well, five or six, anyway. ;-)
For starters, see Immutable Value for a good explanation of why value objects should always be immutable, Use Factories To Build Objects to see how and why to avoid the new
keyword, Build Interface Implementation Pairs to see how to use interfaces everywhere, and No Null Beyond Method Scope to see how to put an end to those pesky NullPointerException
s (or at least to make them occur near the source of the problem).