Interface providing a generic mechanism for invalidating a composite object when one or
more of its compositing values has changed.
Objects often internally cache values which are expensive to compute: an object with
a large number of fields may cache its hash code, a polygon may cache its bounds, ...
These cached values need to be recomputed whenever the fields that were used to compute the value
have changed. In most cases, an object will know when to clear these values, for example because
a method that changes a field has been called on the object, or the object is notified of a
change via a listener event.
When an object (parent) is composited of multiple other objects (children) which are mutable
themselves, and the parent object cannot register itself as a listener to its children, the
parent object won't have a mechanism to know when its cached values need to be invalidated.
The parent may then implement this interface to provide a way to notify it that it needs to
invalidate its cached values. It is the responsibility of the person who changes the child(ren)
to notify the parent after the change, via the
method provided by this