
Subject - Interface implemented by the RealSubject and representing its services.The participants classes in the proxy pattern are: The figure below shows a UML class diagram for the Proxy Pattern: The intent of this pattern is to provide a “Placeholder” for an object to control references to it.The image viewer must be able to list all photo objects, but the photo objects must not be loaded into memory until they are required to be rendered. Sometimes you will be looking for a particular photo, sometimes you will only want to see an image name. An image viewer program must be able to list and display high resolution photo objects that are in a folder, but how often do someone open a folder and view all the images inside. This ability to control the access to an object can be required for a variety of reasons: controlling when a costly object needs to be instantiated and initialized, giving different access rights to an object, as well as providing a sophisticated means of accessing and referencing objects running in other processes, on other machines.Ĭonsider for example an image viewer program. These light objects are called proxies and they will instantiate those heavy objects when they are really need and by then we'll use some light objects instead. Until that point we can use some light objects exposing the same interface as the heavy objects. For example if we need to use only a few methods of some costly objects we'll initialize those objects when we need them entirely. Sometimes we need the ability to control the access to an object.
