您的位置:首页 > 编程语言 > Java开发

浅谈 java 设计模式--代理模式(Proxy pattern)

2012-08-15 17:56 836 查看
一、 Proxy模式定义:

为其他对象提供一种代理以控制这个对象的访问。

二、 模式解说

代理模式(Proxy)就是为其他对象提供一种代理以控制这个对象的访问,一个对象不想直接访问这个对象

具体Subject类:定义了RealSubject和Proxy的公用接口,这样就可以任何使用RealSubject的地方都可以用Proxy

RealSubject类:定义了Proxy所代表的真实实体。

Proxy类:保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来代替实体。

三、 结构图

Proxy模式结构图如下:



四、 一个请求的提交过程,每次在调用一个类的方法的时候,都先经过这个类的代理(Proxy),下面就是一个简单的例子来笔记一下:

package com.designpattern.proxy;

public interface Phone {
public void show();
}
package com.designpattern.proxy;

public class IPhone4S implements Phone {

private String owner;

public IPhone4S(String owner) {
this.owner = owner;
}

@Override
public void show() {
System.out.println("I'm " + owner
+ "'s IPhone4S which can do nothing while just a phone!");
}
}
package com.designpattern.proxy;

public class Proxy implements Phone {

private String owner;
private IPhone4S phone;

public Proxy(String owner) {
this.owner = owner;
}

@Override
public void show() {
if (phone == null) {
phone = new IPhone4S(owner);
}
phone.show();

}
}
package com.designpattern.proxy;

public class Client {
public static void main(String[] args) {
Proxy proxy = new Proxy("halberd");
proxy.show();
}
}

五、 适用性

1) 假如有一个外部组件包,不允许实现其接口,则就只能使用其动态代理了。

2) 直接访问一个对象很困难,或者说不能访问,此时只能是找个代理去访问,然后把结果反馈给自己。

六、 优缺点

1) 优点: 向客户端隐藏了访问某个对象的细节及复杂性;可以动态地调用一个对象中的方法,且无需实现固定的接口。

http://blog.csdn.net/flustar/article/category/363386
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: