Java设计模式 ->代理模式

简介: Java设计模式 ->代理模式

代理模式:Proxy Pattern、结构型设计模式


代理模式是为其他对象提供一种代理,以控制对这个对象的访问。

代理模式核心在于 在客户端和目标对象之间起到中介的作用


代理模式应用场景


1、生活中的 房产 中介 快递 等

2、事物、切面日志、分库分表多个数据源 等


JDK动态代理


1、实现 InvocationHandler 接口


2、通过 字节码重组 ,重新生成对象来替代原生对象


3、获取代理对象引用,并反射获取所有接口


4、JDK动态代理生成一个新类,新的类实现被代理类所有接口


5、生成java代码,编译 .class 文件,加载到JVM中


ps:在ClassPath下只要以$开头的 .class 文件,一般都是自动生成的。


CgLib动态代理


1、实现 MethodInterceptor 接口的 intercept 方法


2、代理的目标对象不需要实现任何接口,通过动态继承目标对象实现动态代理


3、代理效率比JDK代理高,采用 FastClass 机制


4、FastClass:代理类和被代理类各生成一个对象,分配一个index,这个index作为入参直接进行调用,省去反射


5、生成java代码,编译 .class 文件,加载到JVM中


代理模式的优缺点


优点:


1、代理模式能将代理对象与真实调用目标对象进行分离


2、在一定程度上降低了系统的耦合性,增加系统扩展性


3、起到保护目标对象、增强目标对象的作用


缺点:


1、增加系统复杂度,增加类的数量


2、在客户端和目标对象中增加一个代理对象,可能会导致请求速度变


Spring代理模式源码应用


1、JdkDynamicAopProxy CglibAopProxy

2、当 Bean 有实现接口时,Spring会用JDK动态代理。

3、当 Bean 没有实现接口时,Spring会选CgLib代理。

4、在Spring中可以通过配置文件配置使用CgLib代理。

相关文章
|
5月前
|
设计模式 缓存 安全
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
115 0
|
5月前
|
设计模式 Java 数据库连接
【设计模式】【结构型模式】代理模式(Proxy)
一、入门 什么是代理模式? 代理模式(Proxy Pattern)是一种结构型设计模式,允许你提供一个代理对象来控制对另一个对象的访问。 代理对象在客户端和目标对象之间起到中介作用,可以在不改变目标对
116 10
|
7月前
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
|
9月前
|
设计模式 缓存 Java
「全网最细 + 实战源码案例」设计模式——代理模式
代理模式(Proxy Pattern)是一种结构型设计模式,通过代理对象控制对目标对象的访问并添加额外功能。它分为静态代理和动态代理,后者包括JDK动态代理和CGLIB动态代理。JDK动态代理基于接口反射生成代理类,而CGLIB通过继承目标类生成子类。代理模式适用于延迟初始化、访问控制、远程服务、日志记录和缓存等场景,优点是职责分离、符合开闭原则和提高安全性,缺点是增加系统复杂性。
214 25
|
10月前
|
设计模式 前端开发 数据安全/隐私保护
前端必须掌握的设计模式——代理模式
代理模式(Proxy Pattern)是一种结构型设计模式,通过引入“替身”对象来间接访问真实对象,从而解耦并提升性能和安全性。例如,知名艺人复出后,经纪人作为代理筛选商单,确保只处理符合团队利益的请求。代码实现中,定义接口`IService`,艺人和经纪人都实现该接口,经纪人在访问时进行过滤和转发。代理模式常用于权限控制、性能优化等场景,如前端中的Tree-shaking和ES6的Proxy构造方法。
前端必须掌握的设计模式——代理模式
|
11月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
177 6
|
11月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
146 4
|
设计模式 监控 算法
Java设计模式梳理:行为型模式(策略,观察者等)
本文详细介绍了Java设计模式中的行为型模式,包括策略模式、观察者模式、责任链模式、模板方法模式和状态模式。通过具体示例代码,深入浅出地讲解了每种模式的应用场景与实现方式。例如,策略模式通过定义一系列算法让客户端在运行时选择所需算法;观察者模式则让多个观察者对象同时监听某一个主题对象,实现松耦合的消息传递机制。此外,还探讨了这些模式与实际开发中的联系,帮助读者更好地理解和应用设计模式,提升代码质量。
Java设计模式梳理:行为型模式(策略,观察者等)
|
11月前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
504 0
|
存储 设计模式 安全
Java设计模式-备忘录模式(23)
Java设计模式-备忘录模式(23)
114 3

热门文章

最新文章