java 代理

代理模式:为对象包装一个代理,使得这个代理可以控制对目标对象的访问。

外界通过代理对象间接访问目标对象。

静态代理

  • 代理对象拥有目标对象的句柄。
  • 所有调用目标对象的方法,都通过调用代理对象来实现。
  • 对于每一个目标对象的方法,都需要静态编码。即在代理对象中实现。

动态代理

  • 代理对象对目标对象方法的调用,都会被代理处理器动态拦截。再由代理处理器使用反射的方式来执行。
  • 代理处理器:
  1. 持有目标对象的句柄。
  2. 实现InnocationHandler接口:

1). 实现invoke方法。
2). 所有代理对象调用的方法,都会被动态拦截,转发到invoke方法中。
3). invoke方法中形参method就是代理对象中调用的具体方法。


  1. 代理对象:

1). 根据给定的接口,由Proxy类自动生成。
2). 通常和目标对象实现同样的接口。
3).可实现多个接口,当多个接口有同名的方法时,默认选择排在前面的接口中的方法。


面向切面编程(AOP)

面向对象:将需求和功能划分为不同的,独立的类;再通过继承,多态来实现相同和不同的功能。

面向切向:将需求功能从多个类中分离出来,当需要变换这个功能时,只需要进行相关切换即可,不需要修改原来的代码。

面向切面的优点

  1. 分离代码,降低程序的耦合。
  2. 业务逻辑变换不需要修改源代码,不需要重启程序。
  3. 加快开发速度,将程序分成更多块进行编写和测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值