the proxy design pattern l.
Skip this Video
Loading SlideShow in 5 Seconds..
The Proxy Design Pattern PowerPoint Presentation
Download Presentation
The Proxy Design Pattern

Loading in 2 Seconds...

play fullscreen
1 / 19

The Proxy Design Pattern - PowerPoint PPT Presentation

  • Uploaded on

The Proxy Design Pattern. Problem: Defer the cost of object creation and init. until actually used Applicability (possible contexts): Virtual Proxy : Create an expensive object on demand (lazy construction) Cache Proxy (PLoPD 2): Hold results temporarily

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'The Proxy Design Pattern' - giverny

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
the proxy design pattern
The Proxy Design Pattern
  • Problem: Defer the cost of object creation and init. until actually used
  • Applicability (possible contexts):
    • Virtual Proxy: Create an expensive object on demand (lazy construction)
    • Cache Proxy (PLoPD 2): Hold results temporarily
    • Remote Proxy: Use a local representative for a remote object (different address space)
    • Protection Proxy: Control access to shared object
intent and motivation
Intent and Motivation
  • Intent
    • Provide a surrogate of placeholder for another object to control access to it.
  • Motivation
    • Deferring object creation – lazy evaluation, on demand creation
    • Separate this from the actual object
      • Client treats the Proxy as if the real object was created
      • Proxy interprets the on-demand evaluation policy.
proxy applicability
Proxy Applicability
  • Remote proxy provides a local representation of the remote object in different address spaces
  • Virtual proxy creates expensive objects on demand
  • Protection proxy controls access to the original object, for instance when implementing access rights to objects in a separate layer
  • Smart reference instead of a simple pointer to count object references including
    • Counting references
    • Loading persistent objects into memory on first reference
    • Checking object locking on access
proxy participants
Proxy Participants
  • Proxy (ImageProxy)
    • Maintains a reference by which to access the real subject.
    • Provides an interface identical to Subject, so it can be substituted for the real subject
    • Controls access to the real subject and may be responsible for creating it.
    • Also:
      • For remote proxy – encoding and decoding messages (I.e., RPC)
      • For virtual proxy – caching the real subject
      • For protection proxy – check callers access rights.
  • Subject (Graphic)
    • Defines the common interface for RealSubject and Proxy so that a Proxy can be used anywhere a RealSubject can.
  • RealSubject (Image)
    • defines, the real object that the proxy represents.
  • Collaborations
    • Proxy forwards requests to RealSubject when appropriate, depending on the kind of proxy.
    • May perform some operations before like a mediator, or after.
  • Consequences
    • Remote proxy – hides the fact that RealSubject is remote
    • Virtual proxy – optimizes such as on-demand creation
    • Protection proxy and smart reference – allow additional housekeeping chores when subject is accessed.
    • Copy-on-write – postpones creation of a copy of an object until it is necessary (if at all changed from the original).

1. The image is expensive to load

2. The complete image is not always necessary



a bad solution
A Bad Solution

Obviously, the document should not be aware to the optimization, nor to the image contents, etc.

document::draw(){ switch (glyph.type) { case image: if (cannot_optimize) load_full_image(); else optimize(glyph); break; case paragraph: . . .

  • Behaviour of an object depends on its state, and it must change its behaviour depending on that state.
  • Operations have large multipart conditional statements ...
proxy solution example
Proxy Solution (example)

Solution: Provide a “surrogate” or place-holder which provides transparent access to another object

Image Proxy



|| file_name : String


|| get_image( )

|| ImageData

Draft( )

DrawDetailed( )




Draw( )

proxy solution example object diagram
Proxy Solution (example):Object Diagram

2: get_image ( )

1: DrawDetailed ( )




3: new (fileName)

4: DrawDetailed( )



proxy solution general form
Proxy Solution (general form)



Request( )


Request( )



Request( )

proxy structure19
Proxy Structure

Provide a surrogate or placeholder for another object to control access to it