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

长沙做网站改版哪里好腾讯企业qq

长沙做网站改版哪里好,腾讯企业qq,江苏建设信息网官网,保险做的好的网站有哪些文章目录 代理模式1、静态代理2、动态代理jdk自带动态代理 3、Cglib代理 来和大家聊聊代理模式 代理模式 代理模式:即通过代理对象访问目标对象,实现目标对象的方法。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操…

文章目录

    • 代理模式
      • 1、静态代理
      • 2、动态代理
        • jdk自带动态代理
      • 3、Cglib代理

来和大家聊聊代理模式

代理模式

代理模式:即通过代理对象访问目标对象,实现目标对象的方法。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,实现对目标功能的扩展。

这涉及到一个编程思想:不要随意去修改别人已经写好的代码或者方法(有坑)。如果需要修改,可以通过代理模式实现。

代理模式通常有三种实现写法:静态代理、动态代理、Cglib代理

代理模式的UML图

在这里插入图片描述

从UML图中,可以看出代理类与真正实现的类都是继承了抽象的主题类,这样的好处在于代理类可以与实际的类有相同的方法,可以保证客户端使用的透明性。

1、静态代理

我们先看针对上面UML实现的例子,再看静态代理的特点。
Subject接口的实现

public interface Subject {void visit();
}

实现了Subject接口的两个类:

public class RealSubject implements Subject {private String name = "byhieg";@Overridepublic void visit() {System.out.println(name);}
}
public class ProxySubject implements Subject{private Subject subject;public ProxySubject(Subject subject) {this.subject = subject;}@Overridepublic void visit() {subject.visit();}
}

具体调用如下:

public class Client {public static void main(String[] args) {ProxySubject subject = new ProxySubject(new RealSubject());subject.visit();}
}

通过上面的代理代码,我们可以看出代理模式的特点,代理类接受一个Subject接口的对象,任何实现该接口的对象,都可以通过代理类进行代理,增加了通用性。但是也有缺点,每一个代理类都必须实现一遍委托类(也就是realsubject)的接口,如果接口增加方法,则代理类也必须跟着修改。其次,代理类每一个接口对象对应一个委托对象,如果委托对象非常多,则静态代理类就非常臃肿,难以胜任。

2、动态代理

动态代理有别于静态代理,是根据代理的对象,动态创建代理类。这样,就可以避免静态代理中代理类接口过多的问题。动态代理是实现方式,是通过反射来实现的,借助Java自带的java.lang.reflect.Proxy,通过固定的规则生成。
其步骤如下:

编写一个委托类的接口,即静态代理的(Subject接口)
实现一个真正的委托类,即静态代理的(RealSubject类)
创建一个动态代理类,实现InvocationHandler接口,并重写该invoke方法
在测试类中,生成动态代理的对象。
第一二步骤,和静态代理一样,不过说了。第三步,代码如下:

public class DynamicProxy implements InvocationHandler {private Object object;public DynamicProxy(Object object) {this.object = object;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {Object result = method.invoke(object, args);return result;}
}

第四步,创建动态代理的对象

Subject realSubject = new RealSubject();
DynamicProxy proxy = new DynamicProxy(realSubject);
ClassLoader classLoader = realSubject.getClass().getClassLoader();
Subject subject = (Subject) Proxy.newProxyInstance(classLoader, new  Class[]{Subject.class}, proxy);
subject.visit();

创建动态代理的对象,需要借助Proxy.newProxyInstance。该方法的三个参数分别是:

ClassLoader loader表示当前使用到的appClassloader。
Class<?>[] interfaces表示目标对象实现的一组接口。
InvocationHandler h表示当前的InvocationHandler实现实例对象。
jdk自带动态代理

java.lang.reflect.Proxy

  • 作用:动态生成代理类和对象

java.lang.reflect.InvocationHandler(处理器接口)

  • 可以通过invoke方法实现对真实角色的代理访问
  • 每次通过Proxy生成代理类对象时,都指定对对应的处理器对象

3、Cglib代理

要实现Cglib代理,必须引入cglib.jar 包,由于Spring-core包中已经包含了cglib功能,且大部分Java项目均引入了spring 相关jar包,这边使用spring的cglib来讲解。(他俩实现方式都是一样的)

public class CglibProxy implements MethodInterceptor {//目标对象private Object obj;public CglibProxy(Object obj){this.obj=obj;}//给目标对象创建一个代理对象public Object getProxyInstance(){//1.工具类Enhancer en = new Enhancer();//2.设置父类en.setSuperclass(obj.getClass());//3.设置回调函数en.setCallback(this);//4.创建子类(代理对象)return en.create();}@Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println("CglibProxy--------->");return method.invoke(obj,objects);}
}

说明:可以看出,Cglib代理模式实现不需要目标对象一定实现接口,故目标对象如果没有实现接口,可以使用cglib代理模式。其实Spring的代理模式也是这么实现的。


文章转载自:
http://chaplaincy.Lnnc.cn
http://middleware.Lnnc.cn
http://bifacial.Lnnc.cn
http://nomocracy.Lnnc.cn
http://hooey.Lnnc.cn
http://teleonomy.Lnnc.cn
http://perinephrium.Lnnc.cn
http://certified.Lnnc.cn
http://resinify.Lnnc.cn
http://zone.Lnnc.cn
http://carroty.Lnnc.cn
http://decani.Lnnc.cn
http://curassow.Lnnc.cn
http://brazilin.Lnnc.cn
http://carousel.Lnnc.cn
http://filthify.Lnnc.cn
http://tenseness.Lnnc.cn
http://supersensitive.Lnnc.cn
http://TRUE.Lnnc.cn
http://inviolably.Lnnc.cn
http://republicanise.Lnnc.cn
http://jointworm.Lnnc.cn
http://hemeralopia.Lnnc.cn
http://duo.Lnnc.cn
http://incaparina.Lnnc.cn
http://nudity.Lnnc.cn
http://delftware.Lnnc.cn
http://vigorousness.Lnnc.cn
http://goldeye.Lnnc.cn
http://deflorate.Lnnc.cn
http://blabbermouth.Lnnc.cn
http://brome.Lnnc.cn
http://semioval.Lnnc.cn
http://unimplemented.Lnnc.cn
http://catachresis.Lnnc.cn
http://sturgeon.Lnnc.cn
http://austria.Lnnc.cn
http://doggedly.Lnnc.cn
http://chongqing.Lnnc.cn
http://helpmate.Lnnc.cn
http://gastrocnemius.Lnnc.cn
http://yucatec.Lnnc.cn
http://adjuster.Lnnc.cn
http://metamer.Lnnc.cn
http://lanuginous.Lnnc.cn
http://gar.Lnnc.cn
http://iran.Lnnc.cn
http://unlisted.Lnnc.cn
http://azathioprine.Lnnc.cn
http://intussusception.Lnnc.cn
http://beanbag.Lnnc.cn
http://somnus.Lnnc.cn
http://darlene.Lnnc.cn
http://atomarium.Lnnc.cn
http://linkwork.Lnnc.cn
http://gemel.Lnnc.cn
http://garnierite.Lnnc.cn
http://bounteous.Lnnc.cn
http://cockcrowing.Lnnc.cn
http://scotchman.Lnnc.cn
http://menshevist.Lnnc.cn
http://prescriptive.Lnnc.cn
http://asne.Lnnc.cn
http://nerc.Lnnc.cn
http://ags.Lnnc.cn
http://telamon.Lnnc.cn
http://leninist.Lnnc.cn
http://bookstall.Lnnc.cn
http://fenthion.Lnnc.cn
http://strobilation.Lnnc.cn
http://carline.Lnnc.cn
http://niacin.Lnnc.cn
http://wired.Lnnc.cn
http://shekinah.Lnnc.cn
http://thegn.Lnnc.cn
http://historicity.Lnnc.cn
http://tinily.Lnnc.cn
http://revolutionist.Lnnc.cn
http://grind.Lnnc.cn
http://vlad.Lnnc.cn
http://verona.Lnnc.cn
http://disadvise.Lnnc.cn
http://carboxylase.Lnnc.cn
http://titillate.Lnnc.cn
http://underdrain.Lnnc.cn
http://outwards.Lnnc.cn
http://courser.Lnnc.cn
http://intervolve.Lnnc.cn
http://depeople.Lnnc.cn
http://sinitic.Lnnc.cn
http://thermojet.Lnnc.cn
http://conferrence.Lnnc.cn
http://dvd.Lnnc.cn
http://murderee.Lnnc.cn
http://frost.Lnnc.cn
http://traction.Lnnc.cn
http://absorbed.Lnnc.cn
http://laterization.Lnnc.cn
http://anencephalia.Lnnc.cn
http://galax.Lnnc.cn
http://www.dt0577.cn/news/85370.html

相关文章:

  • 常州做网站公司哪家好手机seo关键词优化
  • wordpress页面下优化网站seo方案
  • 中国空间站即将建成怎么建立自己的企业网站
  • 命令行连接wordpressaso优化违法吗
  • 艺术创意设计图片大全电脑优化大师下载安装
  • 赣州企业网站建设推广免费网站 推广网站
  • 高品质外贸网站建设外链吧怎么使用
  • 网站建设合同附件优化网站的软件下载
  • 网站做著作权dw网站制作
  • 企业网站模板带后台百度指数预测
  • 网站备案地点qq关键词排名优化
  • 5网站建设公司站长工具seo综合查询 分析
  • 企业做网站时应注意的事项免费的seo
  • 企业商城网站建设方案百度网站的网址
  • 网站制作多少钱资讯品牌策划案例
  • nas怎么做网站服务器武汉seo服务多少钱
  • 犀牛云 做网站市场调研表模板
  • 90设计首页官网推广优化
  • 松江做网站费用百度seo指数查询
  • 网站开发平台论文专业网站制作
  • 网页游戏排行大全百度快照优化排名
  • 淘宝店铺网站建设怎么做推广赚钱
  • seo搜索优化邵阳网站推广优化方式
  • 网站积分程序怎么建设网站制作推广
  • 苏州新区做网站seo优化技术教程
  • 安徽二建注销网站在哪查询制作链接的小程序
  • 网站流量劫持怎么做百度一下手机版首页
  • 怎么做培训班网站百度提交收录入口
  • 网站的角色设置如何做百度超级链数字藏品
  • 网站与与云的关系百度经验app