Effective Java - Override clone() method judiciously
Mutable, Immutable, and Cloneable Objects Chapter 15.
Design Patterns