您的位置:首页 > 其它

Structural Patterns Part 7/7: Proxy Pattern

2016-06-06 18:58 344 查看

Structural Patterns Part 7/7: Proxy Pattern

目录

Structural Patterns Part 77 Proxy Pattern

目录

Definition

UML Class Diagram

Implementation

Definition

Proxy Pattern提供了一种控制Real Object的创建和访问的方式,它通常代替了Real Object的功能。

一句话:

One class controls the creation of and access to objects in another class.

何时使用?一般当希望隐藏目标对象的创建和访问时(比如缓存),或者希望在访问目标对象时提供额外的逻辑(动态代理)。

使用频率:

Medium High

UML Class Diagram



Implementation

考虑一个对图片的访问,因为从磁盘读取非常耗时间,所以可以使用代理,把图片缓存起来。

// Image.java
package designpatterns.structuralpatterns.proxy;

public interface Image {
void display();
}

// ImageImpl.java
package designpatterns.structuralpatterns.proxy;

class RealImage implements Image {
private String filename;

public RealImage(String filename) {
this.filename = filename;
loadFromDisk(filename);
}

@Override
public void display() {
System.out.println("Display Image: " + filename);
}

private void loadFromDisk(String filename) {
System.out.println("Load from Disk: " + filename);
}
}

class ProxyImage implements Image {
private RealImage ri;
private String filename;

public ProxyImage(String filename) {
this.filename = filename;
}

@Override
public void display() {
if(null == ri) {
ri = new RealImage(filename);
}

ri.display();
}
}

// ProxyDemo.java
package designpatterns.structuralpatterns.proxy;

public class ProxyDemo {
public static void main(String[] args) {
Image image = new ProxyImage("ProxyPattern.jpg");

//image will be loaded from disk
image.display();
System.out.println();

//image will not be loaded from disk
image.display();
}
}

// output, image loaded only once
Load from Disk: ProxyPattern.jpg
Display Image: ProxyPattern.jpg

Display Image: ProxyPattern.jpg
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息