the proxy design pattern l.
Download
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


  • 165 Views
  • 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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
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.
proxy
Proxy
  • 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).
forces
Forces

1. The image is expensive to load

2. The complete image is not always necessary

optimize!

2MB 2KB

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: . . .

applicability
Applicability
  • 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

Real

Image

|| file_name : String

real_image

|| get_image( )

|| ImageData

Draft( )

DrawDetailed( )

Document

Glyph

0..n

Draw( )

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

2: get_image ( )

1: DrawDetailed ( )

image

aDocument

Proxy

3: new (fileName)

4: DrawDetailed( )

theBitmap:

RealImage

proxy solution general form
Proxy Solution (general form)

RealSubject

Proxy

Request( )

realSubject

Request( )

Subject

client

Request( )

proxy structure19
Proxy Structure

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