当前位置:网站首页 > 技术博客 > 正文

典型的代理模式有



代理模式(Proxy Pattern),Java 常见的设计模式之一,是 GoF 的 23 种设计模式中的一种结构型设计模式。 代理模式 是指客户端并不直接调用实际的对象,而是通过调用代理对象,来间接的调用实际的对象。代理对象 具备真实对象的功能,并代替真实对象完成相应操作,并能够在操作执行的前后,对操作进行增强处理(为真实对象提供代理,然后供其他对象通过代理访问真实对象)。 ~ 本篇内容包括:关于代理模式、代理(静态代理)实现 Demo、代理(动态代理)实现 Demo、代理(CGLIB 动态代理)实现 Demo

文章目录

1、关于代理模式

代理模式(Proxy Pattern),Java 常见的设计模式之一,是 GoF 的 23 种设计模式中的一种结构型设计模式。

代理模式 是指客户端并不直接调用实际的对象,而是通过调用代理对象,来间接的调用实际的对象。代理对象 具备真实对象的功能,并代替真实对象完成相应操作,并能够在操作执行的前后,对操作进行增强处理(为真实对象提供代理,然后供其他对象通过代理访问真实对象)。

Java 中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在 Java 运行时动态生成。动态代理又有 JDK 代理和 CGLib 代理两种。

2、关于代理模式的构成

适配器模式一般包含三种角色:

3、关于代理模式的XML
4、关于代理模式的应用场景

当无法或不想直接引用某个对象或访问某个对象存在困难时,可以通过代理对象来间接访问。使用代理模式主要有两个目的:一是保护目标对象,二是增强目标对象。

5、关于代理模式的优缺点

# 代理模式的优点:

# 代理模式的缺点:

1、Demo 实现

# Subject 抽象主题

# RealSubject 真实主题

# Proxy 代理

2、Demo 测试

# 测试

1、动态代理

由于静态代理只能够对一种类型(接口)进行代理,如果想要对多种类型进行代理的话就需要创建多个代理类,为了弥补了静态代理的不足,从而出现了动态代理,使用反射技术实现

反射包 java.lang.reflect, 里面有三个类:InvocationHandler, Method, Proxy。

2、Demo 实现

# SellTickets 抽象主题

# TrainStation 真实主题

# ProxyFactory 代理工厂,用来创建代理对象

3、Demo 测试

# 测试

1、CGLIB 动态代理

同样是上面的案例,我们再次使用 CGLIB 代理实现。

如果没有定义 SellTickets 接口,只定义了 TrainStation(火车站类)。很显然 JDK 代理是无法使用了,因为 JDK 动态代理要求必须定义接口,对接口进行代理。

CGLIB 是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为 JDK 的动态代理提供了很好的补充。

2、Maven 坐标
3、Demo 实现
4、Demo 测试

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=28bx1ao8mslcw

  • 上一篇: 应用层协议是哪些
  • 下一篇: clientx pagex
  • 版权声明


    相关文章:

  • 应用层协议是哪些2025-01-24 10:30:04
  • 二叉排序树怎么构造2025-01-24 10:30:04
  • 自然流量占比怎么算2025-01-24 10:30:04
  • 性能测试入门2025-01-24 10:30:04
  • 86版王码五笔字根表2025-01-24 10:30:04
  • clientx pagex2025-01-24 10:30:04
  • leveldb lrucache2025-01-24 10:30:04
  • 电脑文字阅读软件2025-01-24 10:30:04
  • 几种常见的数据库2025-01-24 10:30:04
  • 0402电容谐振频率范围2025-01-24 10:30:04