反射,代理,继承(重写),AOP,回调函数关系理解

回调函数(callback):自己只需要调用别人的方法直接完成即可,自己不做,将自己的引用传给别人,让别人去做,别人通过引用再调用自己的的方法来做完,而调用的这个自己方法就是回调函数。
别人并不关心你的函数的具体实现,只知道在什么时候调用你的函数;而你知道你的函数的具体实现,却不知道在什么时候调用你的函数。

反射(reflection):比较底层的一种解决问题的方式,通过得到class字节码文件来获取到一个类中的属性和方法等所有东西,然后进行使用该类


代理(proxy):对于一个普通的类想要扩展其功能,就需要一个代理类,代理类中需要传入一个普通类的对象,至于这个代理类中的代理方法肯定需要普通类中的那个普通方法为前提来扩展,此时获取普通类中的那个方法就可以用多种方式,可以直接通过传入的对象用点号的方式直接调用(静态代理),也可以通过反射的方式获取其中的方法(动态jdk代理),还可以通过拦截回调的方式(动态cglib代理)

代理分为静态代理和动态代理,动态代理又分为jdk代理和cglib代理
静态就是只适用这一个类写死了,而动态可以根据你传入的对象来判定你是哪个类。

代理类定义的时候关注2点:

  1. 代理类的初始化方法的创建(方式也很多:可以重写构造方法(静态代理),也可以写一个返回一个对应的代理类对象的初始化方法(动态代理))
  2. 增强的代理方法的创建增强的代理方法的创建

代理类使用的时候无非就是:

  1. 先创建一个普通类的对象,
  2. 然后将普通类中的对象当成参数来创建出代理类的对象(如果是动态代理,需要先创建一个通用的代理类对象,然后通过通用的代理类对象调用代理类中的初始化方法并传进相应的普通类对象来创建出对应普通类的代理类对象),
  3. 然后通过这个跟普通类对应的代理类对象调用其中的增强方法。

代理的详细解释:https://www.cnblogs.com/ygj0930/p/6542259.html

继承(extends)(重写override):继承后然后重写父类的方法,可以实现对功能的扩展以及直接的改变,这个大家用的较多。

AOP思想(Aspect Oriented Program):面向切面(方面)编程,目的是不修改不污染原来的代码,添加了扩展功能。关注切点和切面,在spring中可以通过配置的方式或注解的方式来实现。在struts2中的拦截器也是利用了aop思想+责任链模式来实现的。那么aop思想的底层实现方式就可以用到上面的技术点来实现!

未完待续。。。。。。。。。。。。。。。。。。。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值