Practical Java Praxis 65: Use Inheritance or Delegation to Define Immutable ClassesPeter Haggar
This solution is particularly useful when you are unable to modify an existing mutable class. For example, the class might be part of a library you are using, and you do not have access to the source code to use the other techniques. In this case, you can use the layering approach. Ho...