Context:

Shared aggregation of read/write resource.

Challenge:

To allow changing the resource without affecting its other users.

Skill:

(Does not involve significant functionality.)

Participants:

Resource Context:

References Resource, possibly interfacing for it. Responsible, in addition to initiating reference counting, for lazy-copying of the resource.

Resource:

A passive participant. It's only responsibility, in addition to initialization, is to allow (deep) copying.

Signature:

Resource Contexts reference Resource.

Used by:

Reference Counting Proxy, Invisible Flyweight Pool.

Scope:

General (system programming).