当前位置: 首页 > 图灵资讯 > 技术篇> 代理模式

代理模式

来源:图灵教育
时间:2023-07-02 17:07:58

代理模式是Java常见的设计模式之一。所谓代理模式,是指客户不直接调用实际对象,而是间接调用实际对象。

为什么要用这种间接的形式来调用对象?一般来说,客户不想直接访问实际对象,或者很难访问实际对象,所以间接访问是通过代理对象完成的。

这种情况在现实生活中很常见,比如请律师代理打官司

1.实现代理模式1.1静态代理

接口或父类需要定义,目标对象与代理对象实现相同的接口或继承相同的父类。

优点:目标对象的功能可以在不修改目标对象功能的情况下扩展。

缺点:代理对象需要实现与目标对象相同的接口,代理类别很多。一旦添加了界面,目标对象和代理对象都需要维护。

代理的每个接口对应一个委托对象。如果委托对象很多,静态代理非常臃肿,难以胜任。

1.2 动态代理

代理对象不实现接口,目标对象实现接口,可以使用动态代理,否则不能使用

动态代理,又称JDK代理,接口代理。

使用JDKAPI在内存中动态构建代理对象,不需要实现接口,但需要指定接口类型。

代理类所在包,java.lang.reflect.Proxy,使用newproxyinstance方法创建。

目标对象使用上述User创建动态代理DynamicproxyFacotry

步骤如下:

1.编写一个委托类接口,即静态代理(Subject接口)

2.实现静态代理(RealSubject)的真正委托类

3.创建动态代理类,实现InvocationHandler接口,并重写invoke方法

4.在测试类中生成动态代理对象。

1.3 cglib代理

静态代理和动态代理模式都要求目标对象实现一个接口,但有时目标对象只是一个单独的对象,没有任何接口。此时,可以使用目标对象子类实现代理。这种方法被称为cglib代理。也被称为子类代理,它在内存中构建子类对象,以实现目标对象的扩展。

上一篇:

vim操作记录

下一篇:

微服务之-SpringCloud