没有合适的资源?快使用搜索试试~ 我知道了~
本文来自csdn,本文全面讲解Android开发中最常用的设计模式-代理模式中的动态代理模式.代理模式中的静态代理模式存在一些特点:1个静态代理只服务1种类型的目标对象若要服务多类型的目标对象,则需要为每种目标对象都实现一个静态代理对象关于静态代理模式可以看文章:代理模式(ProxyPattern):静态代理-最易懂的设计模式解析在目标对象较多的情况下,若采用静态代理,则会出现静态代理对象量多、代码量大,从而导致代码复杂的问题采用动态代理模式。设计动态代理类(DynamicProxy)时,不需要显式实现与目标对象类(RealSubject)相同的接口,而是将这种实现推迟到程序运行时由JVM来实
资源推荐
资源详情
资源评论
设计模式:动态代理模式(设计模式:动态代理模式(ProxyPattern)学习指南)学习指南
目录
1. 为什么要使用动态代理
1.1 背景
代理模式中的静态代理模式存在一些特点:
1个静态代理 只服务1种类型的目标对象
若要服务多类型的目标对象,则需要为每种目标对象都实现一个静态代理对象
关于静态代理模式可以看文章:代理模式(Proxy Pattern):静态代理 - 最易懂的设计模式解析
1.2 冲突
在目标对象较多的情况下,若采用静态代理,则会出现 静态代理对象量多、代码量大,从而导致代码复杂的问题
1.3 解决方案
采用 动态代理模式。
2. 动态代理模式介绍
2.1 实现原理
设计动态代理类(DynamicProxy)时,不需要显式实现与目标对象类(RealSubject)相同的接口,而是将这种实现推迟到程
序运行时由 JVM来实现
即:在使用时再创建动态代理类 & 实例
静态代理则是在代理类实现时就指定与目标对象类(RealSubject)相同的接口
通过Java 反射机制的method.invoke(),通过调用动态代理类对象方法,从而自动调用目标对象的方法
2.2 优点
只需要1个动态代理类就可以解决创建多个静态代理的问题,避免重复、多余代码
更强的灵活性
设计动态代理类(DynamicProxy)时,不需要显式实现与目标对象类(RealSubject)相同的接口,而是将这种实现推迟到程
序运行时由 JVM来实现
在使用时(调用目标对象方法时)才会动态创建动态代理类 & 实例,不需要事先实例化
2.3 缺点
效率低
相比静态代理中 直接调用目标对象方法,动态代理则需要先通过Java反射机制 从而 间接调用目标对象方法
应用场景局限
因为 Java 的单继承特性(每个代理类都继承了 Proxy 类),即只能针对接口 创建 代理类,不能针对类 创建代理类
即只能动态代理 实现了接口的类
2.4 应用场景
基于静态代理应用场景下,需要代理对象数量较多的情况下使用动态代理
AOP 领域
1.定义:即 Aspect Oriented Programming = 面向切面编程,是OOP的延续、函数式编程的一种衍生范型
2.作用:通过预编译方式和运行期动态代理实现程序功能的统一维护。
3.优点:降低业务逻辑各部分之间的耦合度 、 提高程序的可重用性 & 提高了开发的效率
4.具体应用场景:日志记录、性能统计、安全控制、异常处理等
2.5 与静态代理模式的区别
3. 具体应用
接下来,我将用1个具体实例来对 动态代理模式 进行更深一步的介绍
3.1 实例概况
背景:小成 希望买一台最新的顶配 Mac 电脑;小何希望买一台 iPhone
冲突:国内还没上,只有美国才有
解决方案:寻找一个代购一起进行购买
即1个代购(动态代理对象)同时 代替 小成 & 小何(目标对象) 去买Mac(间接访问的操作)
该代购是代购任何商品 = 什么人有什么需求就会去代购任何东西(动态代理)
3.2 使用步骤
1.声明 调用处理器类
2.声明目标对象类的抽象接口
3.声明目标对象类
4.通过动态代理对象,调用目标对象的方法
3.3 步骤详解
步骤1: 声明 调用处理器类
剩余10页未读,继续阅读
资源评论
weixin_38508549
- 粉丝: 5
- 资源: 917
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功