Design Patterns Part IV (TIC V2:C10) - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

Design Patterns Part IV (TIC V2:C10)

Description:

remote proxy: to represent a remote object ... the real object (e.g. a proxy server hides the real server behind the firewall) ... Proxy server in networking ... – PowerPoint PPT presentation

Number of Views:35
Avg rating:3.0/5.0
Slides: 25
Provided by: xiao
Category:

less

Transcript and Presenter's Notes

Title: Design Patterns Part IV (TIC V2:C10)


1
Design PatternsPart IV (TICV2C10)
  • Yingcai Xiao
  • 10/01/08

2
Design Patterns (What?)
  • The original paper by the gang of four
  • http//www.cse.msu.edu/cse870/Materials/Patterns
    /Docs/orig-patterns-paper.pdf
  • Design Patterns are devices that allow designers
    to share knowledge about their design. Design
    patterns identify, name, and abstract common
    themes in object-oriented design.
  • idea reuse vs. code reuse.

3
Characteristics of a Design Pattern
  • smart elegant solutions that would not occur to
    a novice immediately
  • generic independent of specific system
    characteristics
  • well-proven identified from successful real,
    object-oriented systems
  • simple involve only a handful of classes

4
More Characteristics
  • reusable reuse at the design level, generic,
    well-documented
  • object-oriented uses classes, objects,
    generalization, and polymorphism

5
Constructing a Design Pattern
  • name
  • problem description when pattern is to be used
    and which problem it attempts to solve
  • solution classes and objects, their structure,
    and dynamic collaboration
  • consequences results and trade-offs of applying
    the pattern

6
Types of Patterns (Purpose)
  • Categorize patterns by what they do.
  • creational deal with the process of object
    creation
  • structural deal with the composition of classes
    or objects
  • behavioral describe ways in which classes or
    objects interact and allocate responsibilities

7
Types of Patterns (Scope)
  • Scope specifies whether a pattern applies
    primarily to classes or to objects.
  • Class scope deals with relationship between
    classes, established through inheritance.
    (static)
  • Object scope deals with object relationship,
    established through inclusion and usage. (dynamic)

8
Design Pattern Space
9
  • Example Proxy Pattern
  • Proxy provides a surrogate to hide the real
    object behind.
  • Applications
  • remote proxy to represent a remote object
    locally for easy and efficient coding (e.g. Java
    RMI and .NET Remoting)
  • protection proxy to control the access to the
    real object (e.g. a proxy server hides the real
    server behind the firewall)
  • virtual proxy to defer the expansive actions
    creating the real object.
  • smart reference replacement for bare pointer
    that performs additional actions when an object
    is accessed

10
Example Virtual Proxyfrom the original paper by
the gang of fourusing OMT Notation (object
diagram)
Referes to (virtual representation)
Referes to
11
Class Diagram of the Virtual Image Proxy
12
General Structure of a Proxy
Class Diagram
Object Diagram
13
Components of a Proxy
  • Proxy
  • maintains a reference to let proxy access the
    real subject
  • provides an interface identical to Subjects so a
    proxy can be substituted for the real subject
  • controls access to the real subject may be
    responsible for creating and deleting it

14
More Participants
  • Subject
  • defines the common interface for RealSubject and
    Proxy so a Proxy can be used anywhere a
    RealSubject is expected
  • RealSubject
  • defines the real object that the proxy represents

15
Collaborations
  • Proxy forwards request to RealSubject when
    appropriate, depending on the kind of proxy

16
Sequence Diagram
17
Collaboration Diagram
18
Consequences
  • proxy pattern introduces a level of indirection
    when accessing an object
  • a remote proxy can hide the fact that an object
    resides in a different address space
  • a virtual proxy can perform optimizations such as
    creating an object on demand
  • protection proxies and smart references allow
    additional tasks when an object is referenced

19
Implementation
  • A proxy can exploit the following features
  • Java use interface and implementation.
  • C use virtual functions and overloading the
    member access operators.
  • Smalltalk use doesNotUnderstand, which supports
    automatic forwarding of requests
  • Proxy doesnt have to know the type of the real
    object (upcasted to Object in Java)

20
Sample Code in Java
  • public class Proxy implements Subject
  • RealSubject refersTo
  • public void Request ( )
  • if (refersTo null)
  • refersTo new RealSubject ( )
  • refersTo.Request ( )

21
Known Uses
  • Stubs in Java RMI.
  • Proxy server in networking
  • NEXTSTEP uses proxies as local representatives
    for objects that may be distributed
  • Proxies in Smalltalk to access remote objects

22
Related Patterns
  • adapter provides a different interface to the
    object it adapts proxy provides the same
    interface as its subject
  • decorator adds one or more responsibilities to
    an object proxy controls access to an object
  • a protection proxy might be implemented exactly
    like a decorator

23
Proxy Example in C
class ProxyBase public virtual void f()
0 virtual void g() 0 virtual void h()
0 virtual ProxyBase() class
Implementation public ProxyBase public
void f() cout ltlt "Implementation.f()" ltlt endl
void g() cout ltlt "Implementation.g()" ltlt
endl void h() cout ltlt "Implementation.h()"
ltlt endl
24
Proxy Example in C
class Proxy public ProxyBase ProxyBase
implementation public Proxy()
implementation new Implementation()
Proxy() delete implementation // Forward
calls to the implementation void f()
implementation-gtf() void g()
implementation-gtg() void h()
implementation-gth() int main()
Proxy p p.f() p.g() p.h()
///
Write a Comment
User Comments (0)
About PowerShow.com