This interface is proxy to the adapted object.
In order to make it possible to have weak references to objects,
the XAdapter interface must be implemented to provide
a weak adapter for the clients.
Concept of weak referencing:
This module specifies the interfaces for implementing and using
weak references.
The sense of weak references is to hold a reference to an object
without affecting the lifetime of the object. That means that a weak
reference may become invalid, at any time, if the referenced object dies.
The following interfaces describe one way to handle weak references
by providing a weak adapter. The weak object has to provide this
adapter if anyone wants to hold a weak reference. To separate their
lifetimes, the adapter and the original object must not share the same
reference counter. The weak reference is in fact only a hard reference
to the adapter, which knows - but does not hold - the original object.
That means that the implementation and synchronization of weak
referencing is the responsibility of the object. The following
interfaces are involved in the concept of weak referencing:
It is important that the adapter must know, but not hold
the adapted object. If the adapted object dies, all references
to the adapter have to be notified to release the adapter.