You built the interface to your class, and you want users to follow it. You don’t want users to access or modify the internal state of your objects without your knowledge. You’ve got four different strategies for protecting your internal data structures from unintended modifications: value types, immutable types, interfaces,
and wrappers.