浅谈 java 设计模式--代理模式(Proxy pattern)
2012-08-15 17:56
836 查看
一、 Proxy模式定义:
为其他对象提供一种代理以控制这个对象的访问。
二、 模式解说
代理模式(Proxy)就是为其他对象提供一种代理以控制这个对象的访问,一个对象不想直接访问这个对象
具体Subject类:定义了RealSubject和Proxy的公用接口,这样就可以任何使用RealSubject的地方都可以用Proxy
RealSubject类:定义了Proxy所代表的真实实体。
Proxy类:保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来代替实体。
三、 结构图
Proxy模式结构图如下:
四、 一个请求的提交过程,每次在调用一个类的方法的时候,都先经过这个类的代理(Proxy),下面就是一个简单的例子来笔记一下:
五、 适用性
1) 假如有一个外部组件包,不允许实现其接口,则就只能使用其动态代理了。
2) 直接访问一个对象很困难,或者说不能访问,此时只能是找个代理去访问,然后把结果反馈给自己。
六、 优缺点
1) 优点: 向客户端隐藏了访问某个对象的细节及复杂性;可以动态地调用一个对象中的方法,且无需实现固定的接口。
http://blog.csdn.net/flustar/article/category/363386
为其他对象提供一种代理以控制这个对象的访问。
二、 模式解说
代理模式(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
相关文章推荐
- 浅谈JAVA设计模式之——代理模式(proxy)
- 浅谈Java设计模式(八)代理模式(Proxy)
- Java设计模式(10)代理模式(Proxy模式)
- Java设计模式十八:代理模式(Proxy)
- 【结构型模式】代理模式(Proxy)之23种java设计模式
- JAVA设计模式(24) —代理(Proxy)模式
- Java设计模式之结构型模式-代理模式(Proxy)
- 浅谈Java设计模式之------代理模式
- Java设计模式之代理模式(Proxy)
- java设计模式之Proxy(代理)
- Java设计模式Proxy之动态代理
- Java经典设计模式-结构型模式-代理模式(Proxy)
- java设计模式之(代理)Proxy
- 浅谈 java 设计模式--命令行模式(Command pattern)
- java设计模式之——Proxy:代理模式
- java 23种常用设计模式之代理模式(Proxy)
- 【CDP-云设计模式】第4章,7.改写代理模式(Rewrite Proxy Pattern)
- 设计模式(十二)----- 代理模式(Proxy)----(JAVA版)
- Java-马士兵设计模式学习笔记-代理模式-动态代理 调用Proxy.newProxyInstance()
- Java开发中的23种设计模式之八:代理模式(Proxy)