Java23种设计模式【7】----》代理模式(Proxy patern)
一、生活中的场景
代理公司,经纪人,中介
二、Java程序中的场景
三、核心作用
举例:歌手和经纪人
客户需要歌手来唱歌,不找歌手,而是找歌手的经纪人。
经纪人:负责面谈、合同起草、签字、收预付款、安排机票和车辆、安排唱歌、收尾款等统一流程的事
歌手:负责唱歌
故经纪人是歌手的代理。
所以:
某个(某类)对象:歌手
调用方法:指歌手唱歌
前置处理:负责面谈、合同起草、签字、收预付款、安排机票和车辆、安排唱歌
后置处理:收尾款
四、核心角色
五、应用场景
六、分类
(1)、静态代理:代理类自己创建
(2)、动态代理:代理类不用自己创建,由代码自动创建,动态生成,使用范围最广
七、开发框架中的代理模式
八、代码实现模型
(1)静态代理
代理角色和真实角色共同实现同一套接口,都可以完成客户的需求,但是通常客户会先找代理来做这些事,所以代理角色里面的唱歌方法实际上调用的是真实角色的唱歌方法。
注意:代码实现和真实场景的区别,虽然真实场景是三个角色,但是代码实现的时候可能会建四个类,所以并不是一个角色一个类。程序通常会将干活者划分为接口和实现两个类,所以代理干活有接口类和实现类,对应了两个类。
(2)动态代理(JDK自带的实现)
jdk实现的两个类,反射包中的
流程处理、统一流程控制都在handler的invoke方法中执行;
所以每次生成代理类时,都要指定代理类接口;
动态生成代理类的代码(字节码),生成动态代理类中跳转到handler的invoke方法。
九、代码实现
(1)静态代理
经纪人/歌手接口:
明星:
经纪人:
Client客户找经纪人谈唱歌事宜:
(2)动态代理
抽象接口:
明星:
处理器:
创建代理对象并调用代理类方法:
创建代理类对象时,默认动态生成代理类的代码(字节码),生成动态代理类中跳转到handler的invoke方法。
结果:
说明调用代理接口时,都会进入handler的方法invoke中,所以可以做统一的流程控制:
创建代理对象并调用代理类方法:
执行结果:
Java23种设计模式【7】----》代理模式(Proxy patern)相关推荐
- 二十四种设计模式:代理模式(Proxy Pattern)
代理模式(Proxy Pattern) 介绍 为其他对象提供一个代理以控制对这个对象的访问. 示例 有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这 ...
- java23种设计模式之五:代理模式
一.代理模式介绍 代理模式的定义:就是为一个接品(对象)提供一个代理的对象,并由这个代理对象控制对原对象的访问流程 其中代理又分为:静态代理和动态代理 静态代理:指的是自己要写一个代理类,或者用工具生 ...
- 23种设计模式7_代理模式之一静态代理
23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...
- 三国杀与设计模式之代理模式(Proxy)
本人原博地址:http://blog.saymagic.cn/blog.php?id=17 三国杀案例:在五人局中,作为反贼的黄月英借黄忠的刀杀作为忠臣的夏侯惇,从这句话中我们可以总结出一个成语对不对 ...
- 设计模式之代理模式(Proxy)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 一天一种设计模式之五-----代理模式
2019独角兽企业重金招聘Python工程师标准>>> 一.代理模式简介 代理模式属于结构型模式 定义:代理模式为其他对象提供一种代理以控制对这个对象的访问. 代理模式是java框架 ...
- 带你认识4种设计模式:代理模式、装饰模式、外观模式和享元模式
摘要:本文我们主要介绍结构型模式中的代理模式.装饰模式.外观模式和享元模式. 本文分享自华为云社区<快来,这里有23种设计模式的Go语言实现(三)>,原文作者:元闰子 . 设计模式(Des ...
- 23种设计模式之代理模式
文章目录 代理模式的定义与特点 代理模式的结构与实现 模式的结构 模式的实现 代理模式的应用场景 代理模式的应用实例 代理模式的扩展 代理模式分类 静态代理 动态代理 在有些情况下,一个客户不能或者不 ...
- 05、人人都会设计模式:代理模式--Proxy
PS:转载请注明出处 作者: TigerChain 地址: http://www.jianshu.com/p/1b3b6b003032 本文出自 TigerChain 简书 人人都会设计模式 教程简介 ...
- 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之代理模式
· 代理模式在王者荣耀中的应用 · 应用一(虚拟代理模式) 应用二(远程代理模式) 应用三(充值送好礼) 一.简述 应用一: 在王者荣耀这款游戏里,设置有很多种娱乐游戏模式,比如:无限乱斗.梦境大乱斗 ...
最新文章
- windows——celery
- java广度优先遍历
- 课程设计:基于SQL Server的银行ATM 存取款机系统设计与实现
- 【CSS】css控制模块到顶层或底层
- telnet收发邮件
- C#使用AForge连接摄像头并且拍照
- 压缩包密码,办公文档密码破解实例讲解!
- Unity技术手册 - 形状(Shape)子模块 - Cone椎体和Box盒及Mesh、MeshRenderer、SkinnedMeshRenderer
- 黑鲨3怎么安装鸿蒙系统,黑鲨u盘重装系统步骤
- 【设计】电压电流偏置
- 芯片学生党必会的行业英文术语
- 西门子SCL---S7通信
- OpenCV使用findContours()查找轮廓
- LeetCode刷题(45)~位1的个数【布赖恩·克尼根算法】
- 李开复的《AI·未来》是本好书?我不见得
- (转发)一个硕士生是如何发表5篇sci的
- 电流反馈运算放大器介绍及RF(反馈电阻)的作用
- Msray-Plus采集工具帮您轻松获取目标受众的数据,让您的市场营销更加便捷
- 大数据集群将root用户切换至普通用户使用
- 内容匹配广告投放技术5:品牌展示广告(一)(百度文库课程)
热门文章
- 中国计量大学python期末试卷_中国大学慕课mooc用Python玩转数据期末考试搜题公众号答案...
- 专注于雾化技术研发,“益爽”获千万元天使轮融资...
- 知道坐标matlab三维作图,MATLAB知道(x,y,z)坐标怎样画三维图? 函数是什么? 希望知道的人能告诉我下,谢谢~~~...
- 如何使用计算机打印机共享的打印机驱动程序,如何解决连接共享打印机时“找不到驱动程序”...
- 在哪里可以看计算机系统型号,如何在 Windows 10 中查看计算机系统型号
- php去掉第一个空格,php怎么去除前面空格
- 有趣的计算机黑科技,这些不可思议又有趣好玩的黑科技,你造吗?
- 3升桶和5升桶,倒出4升的水
- 更换计算机电源线,生活小事不求人之教你自己更换电脑硬盘
- 洛谷P2658 汽车拉力比赛