当前位置: 首页 > news >正文

通用企业网站织梦模板(红绿蓝三色)通辽建设工程网站

通用企业网站织梦模板(红绿蓝三色),通辽建设工程网站,凡客诚品v,百度高级搜索指令简介 代理模式有三种不同的形式#xff1a;静态代理、动态代理#xff08;JDK代理、接口代理#xff09;、CGLIB代理 目标#xff1a;在不修改目标对象的前提下#xff0c;对目标对象进行扩展。 静态代理 需要定义接口或父类对象#xff0c;被代理对象和代理对象通过实…简介 代理模式有三种不同的形式静态代理、动态代理JDK代理、接口代理、CGLIB代理 目标在不修改目标对象的前提下对目标对象进行扩展。 静态代理 需要定义接口或父类对象被代理对象和代理对象通过实现相同的接口或继承相同的父类完成代理。 ITeacherDao作为实现接口TeacherDao为目标对象实现了ITeacherDao接口代理对象TeacherDaoProxy需要实现ITeacherDao接口并且需要聚合目标对象。 缺点一旦接口改变代理对象也需要实现新的方法。 动态代理JDK代理、接口代理 它使代理对象不需要实现接口但目标对象要实现接口代理对象的生成是利用JDK的API动态的在内存中构建代理对象。 实例代码 interface ITeacherDao {public void teach(); } //**目标对象** class TearcherDao implements ITeacherDao{Overridepublic void teach() {System.out.println(teacher is teaching);} }代理工厂聚合目标对象有生成代理对象的方法 这里简单介绍一下Proxy.newProxyInstance方法 Object newProxyInstance(ClassLoader loader,Class?[] interfaces,InvocationHandler h);loader目标对象的类加载器 interfaces目标对象的所有接口 InvocationHandler:函数调用时的处理接口//工厂实现 public class ProxyFactory {ITeacherDao target;public ProxyFactory(ITeacherDao iTeacherDao) {this.target iTeacherDao;} // 获取代理对象public Object getInstance(){//使用JDK动态生成代理对象return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),//执行目标对象方法的时候会触发new InvocationHandler() {Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(代理开始..);//调用目标对象的方法Object returnVal method.invoke(target, args);return returnVal;}});} }测试方法: public static void main(String[] args) {ITeacherDao tearcherDaonew TearcherDao();ProxyFactory proxyFactory new ProxyFactory(tearcherDao);Object instance proxyFactory.getInstance();ITeacherDao proxyObject (ITeacherDao)instance;proxyObject.teach();}CGLIB代理子类代理 无需目标对象实现接口直接在内存中构建目标对象的子类对象从而实现功能扩展。 底层通过框架ASM转换字节码并生成新的类。 注意目标类不能是final类 TeacherDao代理对象不用继承接口只需构建一个实现了MethodInterceptor接口的代理工厂对象代理工厂对象聚合代理对象且需要实现interceptor方法用来实现方法的调用。 代码实例 //代理对象不用实现接口 public class TearcherDao {public void teach() {System.out.println(teacher is teaching);} }//代理工厂实现cglib包的MethodInterceptor接口 public class ProxyFactory implements MethodInterceptor {TearcherDao target;//内聚代理对象public ProxyFactory(TearcherDao teacherDao) {this.target teacherDao;}public TearcherDao getProxyInstance() {//创建工具类Enhancer enhancer new Enhancer();//工具类的父类为被代理对象enhancer.setSuperclass(TearcherDao.class);//设置回调函数enhancer.setCallback(this);return (TearcherDao) enhancer.create();}//拦截器控制方法实现Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {System.out.println(cglib代理);Object invoke method.invoke(target, args);return invoke;} // 获取代理对象}
http://www.sadfv.cn/news/5945/

相关文章:

  • 广东地区建网站的公司室内设计效果图在哪里找
  • 抚顺做网站网站建设西安
  • 湖南网站建设营销推广百度一下你就知道官方
  • 高端网站开发哪里好低价网站建设联系方式
  • 深圳网站建设流程西安网站建设 中讯创赢
  • 河海大学学风建设网站注册公司的流程和材料
  • 网站建设 地址 昌乐爱网站
  • 漫画做视频在线观看网站网站SEO优化实训
  • 株洲营销型网站建设小学班级活动设计方案模板
  • 网站开发和安卓开发小程序商城首页设计
  • 网站是否被百度收录竞价推广哪家公司好
  • qq小程序开发导购网站的seo怎么做
  • 如何使用模板做网站鞍山钟点工招聘信息
  • 建站系统多少钱wordpress自动发布网站
  • 湖南网站制作哪家好顺德网站建设域名
  • 全网自媒体平台网站推广和优化教程
  • 网站综合营销方案设计自己可以做开奖网站吗
  • 广州做网站的哪家好源码库官网
  • 帮别人做钓鱼网站犯法吗天津优化网络公司的建议
  • 如何根据网址攻击网站阿里 网站备案核验单
  • 青田建设局网站上海网络维护服务公司
  • 电子商务网站策划书布局设计千万不要嫁给程序员
  • 保洁公司 网站模板威海网站建设吧
  • discuz网站同步秦皇岛软件开发培训
  • 手机百度屏蔽我网站关键词wordpress问题
  • 百度免费网站申请医疗器械公司排名
  • 网站文件权限设置遵义信息网
  • 合肥制作网站租服务器发布网站
  • 数字域名做网站金融网站模版
  • 农业信息网站建设业务外包的典型案例