设计模式:代理模式(Proxy Pattern)
代理模式
代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个 客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间 起到中介的作用。
?
?
?
代理模式一般涉及到三个角色
1>抽象角色:声明真实对象和代理对象的共同接口;
2>代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象迚行封装。
3>真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
?
?
一、我们自己建一个简单的代理模式
1.新建一个抽象角色:Subject接口?
?
package com.kaishengit.proxy.cglib;import net.sf.cglib.proxy.Enhancer;public class Test {public static void main(String[] args) {UserDao dao = new UserDao();//Enhancer同样是cglib包中的Enhancer enhancer = new Enhancer();enhancer.setSuperclass(dao.getClass());enhancer.setCallback(new DaoIntercept());//创建代理对象UserDao proxyDao = (UserDao) enhancer.create();proxyDao.save();}}
?运行结果:
----------------------------------------------------
?
before
save success!
after
----------------------------------------------------
?
----end----
?