java代理模式有什么用

  介绍

这篇文章主要介绍了java代理模式有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

我们先来介绍下什么是代理。

代理是一种设计模式,它的核心思想,是将对目标的访问转移到代理对象上。这样做的好处就是,目标对象在不改变代码的情况下,可以通过代理对象加一些额外的功能。这是一种编程思想,在不改变原有代码的情况下,通过代理增加一些扩展功能。

代理过程如图所示,用户访问代理对象,代理对象通过访问目标对象,来达到用户访问目标对象的目的,

癹ava代理模式有什么用“

代理模式包含一下三个角色:

ISubject:接口对象,该接口是对象和它的代理共用的接口。

TargetSubject:目标对象,是实现抽象主题接口的类。

代理:代理角色,内部含有对目标对象TargetSubject的引用,从而可以操作真实对象。代理对象提供与目标对象相同的接口,以便在任何时刻都能代替目标对象。同时,代理对象可以在执行目标对象操作时,附加其他的操作,相当于对真实对象进行封装。

常见的代理模式分为静态代理和动态代理,动态代理在java中的实现分为JDK动态代理和cglib代理。

静态代理

在之前已经说过,在代理模式中有三个角色,一是目标接口,二是目标对象,三是代理对象。

现在以具体代码来实现,首先是目标接口如下:

,public  interface  IBlogService  {      ,,,void  writeBlog ();   }

目标对象实现了目标接口,代码如下:

public  class  BlogService  implements  IBlogService  {      ,,@Override   ,,,public  void  writeBlog (), {   ,,,,,,,System.out.println(“我# 39;m 写作…“);   ,,,}   }

静态代理对象,通过构造方法获取到目标对象,并实现了目标接口,在目标接口的方法里调用了目标对象的方法,代码如下:

public  class  BlogStaticProxy  implements  IBlogService {   ,,,private  IBlogService  blogService;      ,,,public  BlogStaticProxy (IBlogService  blogService), {   ,,,,,,,this.blogService =, blogService;   ,,,}      ,,@Override   ,,,public  void  writeBlog (), {   ,,,,,,,System.out.println (“start 写作…“);   ,,,,,,,blogService.writeBlog ();   ,,,,,,,System.out.println(“最终获得写作…“);   ,,,}   }

静态代理对象,通过构造方法获取到目标对象,并实现了目标接口,在目标接口的方法里调用了目标对象的方法,代码如下:

public  class  BlogStaticProxy  implements  IBlogService {   ,,,private  IBlogService  blogService;      ,,,public  BlogStaticProxy (IBlogService  blogService), {   ,,,,,,,this.blogService =, blogService;   ,,,}      ,,@Override   ,,,public  void  writeBlog (), {   ,,,,,,,System.out.println (“start 写作…“);   ,,,,,,,blogService.writeBlog ();   ,,,,,,,System.out.println(“最终获得写作…“);   ,,,}   }

测试:

public  class  TestStaticProxy  {      ,,,public  static  void  main (String [], args), {   ,,,,,,,IBlogService  target =, new  BlogService ();   ,,,,,,,BlogStaticProxy  proxy =, new  BlogStaticProxy(目标);   ,,,,,,,proxy.write ();   ,,,}   }
java代理模式有什么用