Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 The Proxy Design Pattern Problem: Defer the cost of object creation and init. until actually used Applicability (possible contexts): – Virtual Proxy:

Similar presentations


Presentation on theme: "1 The Proxy Design Pattern Problem: Defer the cost of object creation and init. until actually used Applicability (possible contexts): – Virtual Proxy:"— Presentation transcript:

1 1 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

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

3 Proxy Motivation

4 Proxy Motivation -2

5 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

6 Proxy Structure

7 Proxy Structure - 2

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

9 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).

10 10 Sample Context: Word Processor Paragraph Document Paragraph Image

11 11 Forces 1. The image is expensive to load 2. The complete image is not always necessary 2MB 2KB optimize!

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

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

14 14 Proxy Solution (example) Image Proxy || file_name : String || get_image( ) Draft( ) DrawDetailed( ) Document Real Image || ImageData Glyph Draw( ) 0..n real_image Solution: Provide a “surrogate” or place-holder which provides transparent access to another object

15 15 Proxy Solution (example): Object Diagram aDocument image Proxy theBitmap: RealImage 1: DrawDetailed ( ) 3: new (fileName) 2: get_image ( ) 4: DrawDetailed( )

16 16 Proxy Solution (general form) RealSubject Request( ) Proxy Request( ) Subject Request( ) client realSubject

17 Proxy Motivation 1

18 Proxy Motivation 2

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


Download ppt "1 The Proxy Design Pattern Problem: Defer the cost of object creation and init. until actually used Applicability (possible contexts): – Virtual Proxy:"

Similar presentations


Ads by Google