Java动态代理的理解

动态代理怎么理解

要理解动态代理,就要先理解什么是“动态”,什么是“代理”。

动态

一般情况下如果想实现接口,就直接在代码里面创建一个该接口的实现类即可,然后代码直接运行起来就可以了。这种情况下,在代码运行前接口的实现类就已经通过硬编码的方式编写好了。

之所以称为“动态”,是因为接口的实现类并不是事先编写好的,而是在代码运行时生成的。这样的类就叫动态类,而由动态类创建的实例,就叫作动态实例。

代理

我们往往不会凭空生成动态类,这么做没有意义。通常是为了指定的目标对象创建代理才会这么做,所以才叫动态代理。

什么时候使用动态代理

常规的代理模式如下:

public interface Image {
   void display();
}

public class RealImage implements Image {

	@Override
	public void display() {
	   System.out.println("Displaying image");
	}public class ProxyImage implements Image {
 
   private Image realImage;
 
   public ProxyImage(Image realImage){
      this.realImage = realImage;
   }
 
   @Override
   public void display() {
      System.out.println("loading...");
      realImage.display();
      System.out.println("this image is beautiful.");
   }
}

要想实现这样的代理模式有一个前提条件,那就是你能访问得了接口(即上例中的接口Image)。但是有时候接口是访问不到的,如第三方库(jar、aar)中的类的内部私有接口。这时候想要按照常规的方式创建代理类是不可能的。这时就可以使用动态代理类。

动态代理类的创建和使用,网络上有很多这里就不多说明了。本文意在阐述“对动态代理的理解”和“要什么时候才使用动态代理”。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值