Design Problem - Delayed Openings
Imagine that you are writing a word processing program. The program
is also capable of displaying images. The images themselves are contained
in files, with a reference contained in the document being edited. Opening
the image files is expensive, so it is desirable to only incur this expense
when a request is made to diplay the page containing the image. The editor
itself should be unaware of whether the image has been already opened or
merely is referenced in the document. Construct a UML class diagram that
cleanly handles the efficiency issue while leaving the editor unchanged.

Variants
- Remote proxy (local reference to a distributed object)
- Virtual proxy (like image)
- Protection proxy (control access)
- Smart reference (reference count, locking, on demand loading)