静态代理与动态代理的区别

静态代理与动态代理的区别

	就个人理解而言静态代理对象是一个具体类,继承某个类或者实现了某个接口,其中的方法掺杂了一些自己
固有的想法逻辑,而动态代理更多的是总结规则,解析事情发展经历的本质,也就是所谓的算法。根据解析出
获得的不同参数,经过算法的运算后得到不同的值。
	静态代理的例子如想要实现自己特有的需求,编写了特有的方法逻辑,但外部使用该类时又不想和原本的
使用方式有太大的区别。如建立符合自己特定需求的连接池等,为了自己的编写的类能够便于别人使用上手
,常会继承某个类或者实现某个接口,套用了这些常用的模板,再去重写自己特定需求的方法逻辑想法等。
如此只需要用父类变量接收自己编写的具体类,就不会影响其他人的正常使用了,便于上手和推广。
	所以简单来说每个静态代理就是一个具体的子类对象,只是重写了父类方法而已。
	动态代理的例子如mybatis的基于Mapper文件的代理。其实就是总结了每个dao层简单的 “传话” 功能,也
就是说通过底层的反射机制去解析该类(通常是接口),通过解析得到的信息去获取加载某些别的信息,当
获取到所有需要的信息后就再去执行某些规则。基于Mapper文件的代理就是给予接口类去获取一个动态代理
底层通过解析接口全名去反射的创建该接口的实现类,而后再去实现相应的方法,方法因为只是简单的且是
特定的简单操作,所以在获取到了所有需要的信息就可以去通过反射去执行了。
	动态代理机制在创建代理机制的时候麻烦却需要比较好的总结规律的能力,但是一个好的动态代理机制出
来后,会随着内容的不断扩张,使得动态代理的机制越发强大,因为是总结了有规律的一些功能方法,所以
适用性会比较高,使用时只需要简单的获取该类的动态代理类,就无需自己去手动的编写具体代码了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值