Home
Core Java
Java
JDBC
Servlets
JSP
EJB
JMS
Struts
Spring
Hibernate
JSF
RMI
CORBA
J2ME
Performance
Tomcat
Weblogic
Design Patterns
Junit
XML
UML
DB2 & SQL
ANT
Free Gift
Contact Us

XML RSS
What is this?
Add to My Yahoo!
Add to My MSN
Add to Google
 

Structural Pattern

Proxy Pattern

Your Ad Here

Creational patterns Structural patterns Behavioral pattern J2EE patterns
Abstract Factory Adapter  Chain of Responsibility
MVC 
Builder Bridge  Command  Business Delegate
Factory method Composite  Interpreter  Composite Entity
Prototype Decorator  Iterator  Data Access Object
Singleton Façade
Mediator  Front Controller

Flyweight  Memento  Intercepting Filter

Proxy  Observer  Service Locator


State  Transfer Object


Strategy 


Template Method



Visitor 

Proxy Pattern



Define proxy pattern
Use a simple object to represent a complex one or provide a placeholder for another object to control access to it.

Where to use & benefits
If creating an object is too expensive in time or memory.
Postpone the creation until you need the actual object.
Load a large image (time consuming).
Load a remote object over network during peak periods.
Access right is required to a complex system.

Related patterns include
  • Adapter pattern, which provides a different interface to the object it adapts, whereas a proxy provides the same interface as its subject, and
  • Decorator pattern, which focuses on adding new functions to an object, whereas a proxy controls access to the object.

Your Ad Here
Example of proxy pattern
When loading a large image, you may create some light object to represent it until the image is loaded completely. Usually a proxy object has the same methods as the object it represents. Once the object is loaded, it passes on the actual object. For example,

abstract class Graphic {
    public abstract void load();
    public abstract void draw();
    ...
}
class Image extends Graphic{
    public void load() {
        ...
    }
    public void draw() {
    ...
    }
    ...
}
class ImgProxy extends Graphic {
    public void load() {
    if(image == null) {
           image = new Image(filename);
    }
    ...
   
    public void draw() {
     ...
    }
    ...
}


Your Ad Here




footer for Proxy Pattern page