java中代理模式是使用最最广泛的一个模式了
在当今最流行的hibernate和Spring中都可以看到它的广泛应用。
比如说在hibernate中的延迟加载和Spring中的AOP.都有它巨大的功劳。
它的中心思想是,为其他对象提供一种代理以控制对这个对象的访问。
有三个角色,抽象主题角色,具体实现角色,代理主题角色
package com.gengu.代理;
/**
* 代理类接口
* */
public interface Subject {
/**这个接口定义了所被代理的类所应该实现的方法*/
public void doSomething();
public void doAnyThing();
}
具体实现角色
package com.gengu.代理;
public class RealSubject implements Subject{
@Override
public void doAnyThing() {
System.out.println("doAnyThing");
}
@Override
public void doSomething() {
System.out.println("doSomeThing");
}
}
代理主题角色
package com.gengu.代理;
/**这是Concrete的代理类*/
public class ProxySubject implements Subject{
private Subject iProxy;
public ProxySubject(Subject iProxy){
this.iProxy = iProxy;
}
@Override
public void doAnyThing() {
before();
this.iProxy.doAnyThing();
after();
}
@Override
public void doSomething() {
before();
this.iProxy.doSomething();
after();
}
private void before(){
System.out.println("调用方法前");
}
private void after(){
System.out.println("调用方法后");
}
}
看了这个代码能很强烈的感受到面向切面编程中的思想。
它的优点是:职责清晰,高扩展性,智能化。
在Spring中的代理模式是这样的:如果一个类实现了接口那么,就会使用JVM自带的动态代理机制,如果没有实现接口,那么会使用CGLIB类实现动态代理。
分享到:
相关推荐
代理模式(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实现设计模式之代理模式