J2EE设计模式--Proxy的几点困惑

shipatrioc 2003-01-13 11:03:25
加精
Proxy(代理)对象结构型模式,其意图是,为其他对象提供一种代理以控制对这个对象的访问。

Adapter(适配器)模式是为它所适配的对象提供一个不同的接口,而Proxy(代理)提供与它的实体相同的接口,Decorator(装饰)则是为对象添加一个或多个功能。

源码说明如下:

Proxy.java 保存一个引用使得代理可以访问实体
public class Proxy implements Subject {
public void request() {
if (lnkRealSubject == null)
lnkRealSubject = new RealSubject();
lnkRealSubject.request();
}

private RealSubject lnkRealSubject;
}

Subject.java 定义RealSubject和Proxy的共用接口,这样就使得在任何使用RealSubject的地方都可以使用Proxy
public interface Subject {
public void request();
}

RealSubjcet.java Proxy所代表的实体
public class RealSubject implements Subject {
public void request() {
System.out.println("RealSubject.request() executing");
}
}

测试程序,Client.java
public class Client {
public static void main(Stringp[] args) {
Proxy theProxy = new Proxy();
theProxy.request();
}
}

Proxy模式在访问对象时引入了一定程度的间接性,根据代理的类型,间接性有多种用途,如下:

1) Remote Proxy 可以隐藏一个对象存在于不同地址空间的事实;
2) Virtual Proxy 可以进行优化,例如在显示包含大图片的文档时,在初始时可以不显示图片,只显示图片的大小,根据需要再创建图片对象,显示图片;
3) Protection Proxies 可以在访问一个对象是附加一些内务处理,如权限验证等
4) Smart Reference 可以智能地管理代理引用的对象,如对引用的对象记数,没有引用时释放对象;为引用对象加锁等;

...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
DavidBone 2003-04-20
  • 打赏
  • 举报
回复
up
xwake 2003-03-13
  • 打赏
  • 举报
回复
yy
shipatrioc 2003-01-13
  • 打赏
  • 举报
回复
不好意思,一时思路混乱,不知该怎么描述!
shipatrioc 2003-01-13
  • 打赏
  • 举报
回复
这是我在“周周共享天空”看到的一篇文章。在提问题之前我先声明我是菜菜鸟级的,问题的幼稚程度如果太深,还请各位不要见笑。
1。上面提到的“Subject.java 定义RealSubject和Proxy的共用接口,这样就使得在任何使用RealSubject的地方”,不解,我怎么感觉class RealSubject 完全没有必要implements interface Subject。不就是一个类 RealSubject作为一个属性存在于类Proxy,Proxy的method里对RealSubject的method进行调用吗?当然它作为一个经典的pattern,不会有问题,是我的理解太肤浅,还是这个例子太简单,只是体现了一种思想。
2。上面提到的Remote Proxy 。我们经常用到的ejb里的EJBObject和EJBHome我觉得好象用到的就是这个pattern,它们都extends interface Remote.
LongWayToGo 2003-01-13
  • 打赏
  • 举报
回复
疑惑呢?理解得挺好啊
shipatrioc 2003-01-13
  • 打赏
  • 举报
回复
太冷清了,算了,结帐!

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧