- 浏览: 754752 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (241)
- 个人思考 (1)
- 数据库 (5)
- java基础 (32)
- 软件工程 (2)
- zk开源框架 (15)
- 设计模式 (25)
- javascript (12)
- css (9)
- UML (2)
- CMMI软件需求 (3)
- CMMI软件设计 (2)
- CMMI软件实现 (1)
- CMMI软件测试 (1)
- 正则表达式 (4)
- 系统日志配置 (4)
- 应用服务器 (1)
- spring (7)
- XML (6)
- java web (10)
- Ajax (3)
- RichFaces (14)
- 问题 (1)
- 评论文章 (2)
- fushioncharts (2)
- MAVN (4)
- jquery (26)
- Ext js学习 (2)
- 学习心得 (2)
- CSS兼容问题 (3)
- XSL-FOP (1)
- Quartz (0)
- OSGI (1)
- spring--security (6)
- apache tools (1)
- eclispe 小技巧 (2)
- Ant (1)
- 杂记 (1)
- spring3系列 (5)
- java cache (4)
- EffectiveJava (2)
- 代码重构 (0)
最新评论
-
psz6696:
可以说是超级简单的Demo了,可惜没有演示设值注入和构造注入两 ...
模拟spring中的ClassPathXmlApplicationContext类的实现 -
ziyourJava:
[flash=200,200][img][url][list] ...
spring security进级篇 V 自定义标签控制显示 -
ztw1122:
...
zk组件开发指南(目录) -
zjysuv:
容我说一句 在座的各位都是垃圾 spring 3.2以后的@C ...
三. spring mvc 异常统一处理 -
chengwu1201:
二 基于Spring的异常体系处理
1. 代理模式
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式一般涉及到三个角色:
抽象角色:声明真实对象和代理对象的共同接口;
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
简单示例代码如下:
由以上代码可以看出,客户实际需要调用的是RealSubject类的request()方法,现在用ProxySubject来代理 RealSubject类,同样达到目的,同时还封装了其他方法(preRequest(),postRequest()),可以处理一些其他问题。 另外,如果要按照上述的方法使用代理模式,那么真实角色必须是事先已经存在的,并将其作为代理对象的内部属性。但是实际使用时,一个真实角色必须对应一个 代理角色,如果大量使用会导致类的急剧膨胀;此外,如果事先并不知道真实角色,该如何使用代理呢?这个问题可以通过Java的动态代理类来解决。/**
*
* @功能:代理模式中公共的行为接口
* @创建人 gao_jie
* @创建日期 May 8, 2009
* @版本 1.0
*
*/
public abstract class Subject {
public abstract void request();
}
/**
*
* @功能:代理模式中真正的实现
* @创建人 gao_jie
* @创建日期 May 8, 2009
* @版本 1.0
*
*/
public class RealSubject extends Subject {
/**
* 构造函数
*/
public RealSubject(){
}
/* (non-Javadoc)
* @see six.proxytrip.Subject#request()
*/
public void request() {
System.out.println("this is a real request!");
}
}
/**
*
* @功能:代理类
* @创建人 gao_jie
* @创建日期 May 8, 2009
* @版本 1.0
*
*/
public class ProxySubject extends Subject {
/**
* 真正使用对象变量
*/
private RealSubject realSubject;
@Override
public void request() {
this.preReqeust();// 调用之前
if (realSubject == null) {
realSubject = new RealSubject();
}
realSubject.request();
this.posReqeust();// 调用之后
}
/**
* 代理类之前的准备工作
*/
public void preReqeust() {
System.out.println("调用真正对象之前的准备");
}
/**
* 代理类之后的处理工作
*/
public void posReqeust() {
System.out.println("调用真正对象之后的处理");
}
}
/**
*
* @功 能 : 客户端测试代码
* @创建人 gao_jie
* @创建日期 May 8, 2009
* @版本 1.0
*
*/
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
ProxySubject proxy = new ProxySubject();
proxy.request();
}
}
测试结果:
调用真正对象之前的准备
this is a real request!
调用真正对象之后的处理
发表评论
-
面向对象设计原则-------总结
2015-07-14 10:55 0单一职能原则 ----- 设计类时,尽量功能单一,粒度合 ... -
MVC设计模式理解
2009-11-16 22:11 2054常常说MVC设计模式,今天抽空整理下,感觉模式这东 ... -
面向对象设计的原则---------迪米特原则
2009-10-15 21:15 3139迪米特原则(Law of Demeter) 1、迪米特原则的 ... -
面向对象设计的原则------接口隔离原则
2009-10-12 15:50 2768接口隔离原则(Interface ... -
面向对象设计的原则------依赖倒置原则
2009-10-11 18:27 3598依赖倒置原则(Dependence Inversion Pri ... -
面向对象设计的原则------里氏代换原则
2009-10-11 14:21 2611里氏代换原则(Liskov Sub ... -
面向对象设计的原则------开闭原则
2009-10-10 23:09 2446开闭原则(Open-Closed Prin ... -
面向对象设计的原则------单一职责原则
2009-10-09 20:36 3248学习设计模式,自然会涉及面向对象的设计原则,面向对 ... -
观察者模式
2009-08-04 22:14 1154gaojie -
组合模式-------树形模式
2009-08-03 20:42 22281、组合模式定义 ... -
命令模式
2009-08-02 14:06 18181、Commad模式是一种对象行为模式,它可以对发送者(se ... -
适配器和外观模式的区别
2009-08-01 18:23 1372ok -
适配器模式
2009-08-01 14:43 1165适配器模式通俗的说是将两个联系不密切的类或类与接口通过另一个类 ... -
门面模式(外观模式)
2009-07-29 22:49 14551、外观模式 为子系统的一组接口提供一个一致的界 ... -
简单工厂模式、代理模式、策略模式如此相似
2009-07-21 22:34 4077最近,一直在看设计模式,感觉简单工厂模式、代理模式、策略模式、 ... -
策略模式
2009-07-19 23:01 1329今天学习策略模式。策略模式是这个样子的。定义一个接 ... -
jdbcTemplate分页封装
2009-07-16 09:17 41131.JdbcTemplateExtend.java publi ... -
单例模式完全剖析
2009-07-07 21:01 1317概要 单例模式是最简单的设计模式之一,但是对于Jav ... -
DAO设计模式
2009-07-04 11:40 2211虽然DAO模式已经有了好多的成熟的框架,但它仍然是 ... -
工厂模式与DAO模式
2009-07-02 21:17 4390工厂模式是设计模式中较简单的模式,但在项目的开发过 ...
相关推荐
代理模式(Proxy) 定义: 为其他对象提供一种代理以控制对这个对象的访问 结构: 由三部分组成 1.RealSubject(真实对象): 真正会调用到的对象 2.Proxy(代理对象): 代理真实对象的地方 3.Subject(共同点): 代理对象...
JAVA设计模式之代理模式实例
代理模式.ppt代理模式.ppt代理模式.ppt
本程序是一个代理模式的小例子。程序比较简单。
深信服网闸代理模式配置教程
设计模式-代理模式(讲解及其实现代码)
//代理模式内部引用了真实角色 public void requst() { this.preRequest(); //在真实角色操作之前所附加的操作 if(null == realsubject) { realsubject = new ReallSubject(); } realsubject.requst(); // ...
设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式
代理模式代理模式代理模式
自己总结的代理模式和Java中的动态代理模式,有源码
代理模式: 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的主要作用是,用来控制真实对象的访问权限,也就是完全对外隐藏真实对象。以及在调用真实对象时,代理还可以额外的处理另外的事。 比如下面...
代理模式的小demo
自己写的一个代理模式的示例,供大家参考 自己写的一个代理模式的示例,供大家参考 自己写的一个代理模式的示例,供大家参考
用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明
Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)
该资源提供了三种代理模式的使用代码,其中包含每种模式的jar包、具体代码、Demo测试类,详细的注释帮助你来理解。
设计模式C++学习之代理模式(Proxy)
.net实现设计模式之代理模式