深圳在哪些网站找什么好处,网站文章怎么做才能被快速收录,北京 网站设计飞沐,网站颜色配色目录 简介:
23设计者模式以及重点模式
代理模式#xff08;Proxy Pattern#xff09;
静态代理示例
spring中应用
动态代理
1.基于JDK的动态代理
target.getClass().getInterfaces()作用
内名内部类写法(更简洁#xff0c;但不推荐) 2.基于CGLIB实现
spring中应用 …目录 简介:
23设计者模式以及重点模式
代理模式Proxy Pattern
静态代理示例
spring中应用
动态代理
1.基于JDK的动态代理
target.getClass().getInterfaces()作用
内名内部类写法(更简洁但不推荐) 2.基于CGLIB实现
spring中应用 简介:
本文是个系列一次会出两个设计者模式作用如果有关联就三个除此外还会讲解在spring中作用。
23设计者模式以及重点模式
我们都知道设计者模式有3类23种设计模式标红是特别重要的设计者模式建议都会而且熟读于心标蓝是指其次重要建议也要明白。
1创建型模式单例模式、抽象工厂模式、构建者模式、工厂模式、原型模式。
2结构型模式适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
3行为型模式访问者模式、模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式。 代理模式Proxy Pattern
代理模式是一种结构型设计模式它通过提供一个替代对象代理来控制对另一个对象的访问。代理对象与原始对象实现相同的接口这使得代理可以站在原始对象的位置被客户端使用同时代理还可以在访问原始对象前后执行额外的操作例如访问控制、延迟初始化、日志记录、监控等。
代理模式分为两类常说的一般是动态代理。
类型
静态代理手动创建代理类。
使用场景在程序创建之前代理类创建好的代理目标是明确的可以使用静态代理。
动态代理在运行时动态创建代理类Java 中可通过 Proxy 类和 InvocationHandler 接口实现。
使用场景让编程人员在不修改对象代码的情况下为这个对象添加额外的功能或者限制
静态代理示例
主要就是给金士顿的U盘算完各种折扣后75给淘宝淘宝全都加25卖给客户业务就是这个业务。
卖U盘的接口定义一个U盘卖多少钱 制作优盘厂商实现类 代理类淘宝类在内部实现类中创建目标类对象引用引用调用目标类方法实现静态代理 自己进行购买 spring中应用
不知道你看出来了吗这个像不像是我们spring框架中一个实现类调用另一个实现类方法。
动态代理
如果目标类很多呢只是静态代理那么需要创建的代理类就很多比如上面的卖u盘例子本来淘宝只卖金士顿但是来个叫李帅帅的U盘厂家但其实你只想想给这两个厂家做一样统一逻辑操作比如还是加25块钱卖出去这是就需要写第二个静态代理类但如果有100个商品呢这时就需要使用动态代理统一加载。 动态代理有两种实现方式
1.基于JDK的动态代理 目标类 动态代理类
method.invoke(target,args) 可以看做target.method(args) 实现类调用
target.getClass().getClassLoder() 得到目标类的实现类的类加载器
target.getClass().getInterfaces()它能够获得所实现这个对象的接口。其实这个接口不一定是目标类实现的接口你看mybatis实现源码接口就是任意接口。但是你要保证这第二个参数是个接口。 target.getClass().getInterfaces()作用
如果不懂这块的可以看看我这块懂就略过 内名内部类写法(更简洁但不推荐) 方法抽取放在一个别的类中方便使用 2.基于CGLIB实现 动态代理有两种实现方式一种是上述jdk的核心是需要动态代理的目标类必须有接口还有一种是基于外部第三方类库的cglib,创建代理对象cglib不要求实现类也就是目标类去实现接口cglib核心要求是继承目标类不能是finall。 cglib 经常被应用在框架中例如 SpringHibernat 等。cglib的代理效率高于 Jdk。对于 cglib 一般的开发中并不使用。做了一个了解就可以。 引入Jar包 !--引入cglib依赖--dependency groupIdcglib/groupId artifactIdcglib/artifactId version2.1_2/version/dependency spring中应用
在 Spring 框架中代理模式被广泛用于实现 AOP面向切面编程例如在事务管理和安全控制中。 ------------------------------------------与正文内容无关------------------------------------ 如果觉的文章写对各位读者老爷们有帮助的话麻烦点赞加关注呗作者在这拜谢了!
混口饭吃了如果你需要Java 、Python毕设、网页和系统设计还有你是刚入职的新手需要度过试用期。请在关注私信我本人看到一定马上回复