MENU

Java-42 接口的应用:代理模式之静态代理

October 16, 2023 • Read: 63 • Java阅读设置

面向对象编程

代理模式

1 什么是代理模式

代理模式中分为代理类和被代理类,对被代理类的某些功能的使用是通过代理类来间接使用的,使得被代理类不会被直接暴露出来。

这里的功能往往是指某个接口,因此代理类会实现被代理类所实现的接口,它们在实现对应接口时有很大不同:

  • 被代理类是基于自身实现对应接口对应功能,是真正的具备对应功能的类;
  • 代理类是基于被代理类的实现接口的功能,在实现接口对应功能时实现的是自己代表被代理类完成对应功能。

代理类表面上是代理被代理类完成某种功能,实际上也可以看成是对某种功能的代理,即对某种接口的代理。

2 静态代理的实现

假设要实现对实现类client的rent接口进行代理:

  • 定义rent接口、client类,并且client类作为rent接口的实现类实现对应功能,proxy作为client的rent功能的代理类,因此proxy也声明为rent的实现类。
  • proxy中定义私有rent接口对应类型属性,这个属性代表proxy代理的具有rent接口的代理类,私有体现出不暴露被代理类,只是在代理中使用。
    由于对client类的rent功能的使用通过对proxy对应功能的使用来实现,因此proxy构造器要接收要代理的client类,作为前面定义的私有属性的值。
    proxy在实现rent对应功能时,若有的功能的某些步骤必须由被代理类亲自完成,则通过对接收被代理类的属性来调用对应接口实现的对应功能来完成,其他由代理类完成的rent对应的功能就直接定义对应代理功能。

3 示例

2023-10-16T13:08:07.png

4 其他

2023-10-16T13:09:50.png