一、生活中的场景

代理公司,经纪人,中介

二、Java程序中的场景

三、核心作用

举例:歌手和经纪人

客户需要歌手来唱歌,不找歌手,而是找歌手的经纪人。

经纪人:负责面谈、合同起草、签字、收预付款、安排机票和车辆、安排唱歌、收尾款等统一流程的事

歌手:负责唱歌

故经纪人是歌手的代理。


所以:

某个(某类)对象:歌手

调用方法:指歌手唱歌

前置处理:负责面谈、合同起草、签字、收预付款、安排机票和车辆、安排唱歌

后置处理:收尾款

四、核心角色

五、应用场景

六、分类

(1)、静态代理:代理类自己创建

(2)、动态代理:代理类不用自己创建,由代码自动创建,动态生成,使用范围最广

七、开发框架中的代理模式

八、代码实现模型

(1)静态代理

代理角色和真实角色共同实现同一套接口,都可以完成客户的需求,但是通常客户会先找代理来做这些事,所以代理角色里面的唱歌方法实际上调用的是真实角色的唱歌方法。

注意:代码实现和真实场景的区别,虽然真实场景是三个角色,但是代码实现的时候可能会建四个类,所以并不是一个角色一个类。程序通常会将干活者划分为接口和实现两个类,所以代理干活有接口类和实现类,对应了两个类。

(2)动态代理(JDK自带的实现)

jdk实现的两个类,反射包中的

流程处理、统一流程控制都在handler的invoke方法中执行;

所以每次生成代理类时,都要指定代理类接口;

动态生成代理类的代码(字节码),生成动态代理类中跳转到handler的invoke方法。

九、代码实现

(1)静态代理

经纪人/歌手接口:

明星:

经纪人:

Client客户找经纪人谈唱歌事宜:

(2)动态代理

抽象接口:

明星:

处理器:

创建代理对象并调用代理类方法:

创建代理类对象时,默认动态生成代理类的代码(字节码),生成动态代理类中跳转到handler的invoke方法。

结果:

说明调用代理接口时,都会进入handler的方法invoke中,所以可以做统一的流程控制:

创建代理对象并调用代理类方法:

执行结果:

Java23种设计模式【7】----》代理模式(Proxy patern)相关推荐

  1. 二十四种设计模式:代理模式(Proxy Pattern)

    代理模式(Proxy Pattern) 介绍 为其他对象提供一个代理以控制对这个对象的访问. 示例 有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这 ...

  2. java23种设计模式之五:代理模式

    一.代理模式介绍 代理模式的定义:就是为一个接品(对象)提供一个代理的对象,并由这个代理对象控制对原对象的访问流程 其中代理又分为:静态代理和动态代理 静态代理:指的是自己要写一个代理类,或者用工具生 ...

  3. 23种设计模式7_代理模式之一静态代理

    23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...

  4. 三国杀与设计模式之代理模式(Proxy)

    本人原博地址:http://blog.saymagic.cn/blog.php?id=17 三国杀案例:在五人局中,作为反贼的黄月英借黄忠的刀杀作为忠臣的夏侯惇,从这句话中我们可以总结出一个成语对不对 ...

  5. 设计模式之代理模式(Proxy)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  6. 一天一种设计模式之五-----代理模式

    2019独角兽企业重金招聘Python工程师标准>>> 一.代理模式简介 代理模式属于结构型模式 定义:代理模式为其他对象提供一种代理以控制对这个对象的访问. 代理模式是java框架 ...

  7. 带你认识4种设计模式:代理模式、装饰模式、外观模式和享元模式

    摘要:本文我们主要介绍结构型模式中的代理模式.装饰模式.外观模式和享元模式. 本文分享自华为云社区<快来,这里有23种设计模式的Go语言实现(三)>,原文作者:元闰子 . 设计模式(Des ...

  8. 23种设计模式之代理模式

    文章目录 代理模式的定义与特点 代理模式的结构与实现 模式的结构 模式的实现 代理模式的应用场景 代理模式的应用实例 代理模式的扩展 代理模式分类 静态代理 动态代理 在有些情况下,一个客户不能或者不 ...

  9. 05、人人都会设计模式:代理模式--Proxy

    PS:转载请注明出处 作者: TigerChain 地址: http://www.jianshu.com/p/1b3b6b003032 本文出自 TigerChain 简书 人人都会设计模式 教程简介 ...

  10. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之代理模式

    · 代理模式在王者荣耀中的应用 · 应用一(虚拟代理模式) 应用二(远程代理模式) 应用三(充值送好礼) 一.简述 应用一: 在王者荣耀这款游戏里,设置有很多种娱乐游戏模式,比如:无限乱斗.梦境大乱斗 ...

最新文章

  1. windows——celery
  2. java广度优先遍历
  3. 课程设计:基于SQL Server的银行ATM 存取款机系统设计与实现
  4. 【CSS】css控制模块到顶层或底层
  5. telnet收发邮件
  6. C#使用AForge连接摄像头并且拍照
  7. 压缩包密码,办公文档密码破解实例讲解!
  8. Unity技术手册 - 形状(Shape)子模块 - Cone椎体和Box盒及Mesh、MeshRenderer、SkinnedMeshRenderer
  9. 黑鲨3怎么安装鸿蒙系统,黑鲨u盘重装系统步骤
  10. 【设计】电压电流偏置
  11. 芯片学生党必会的行业英文术语
  12. 西门子SCL---S7通信
  13. OpenCV使用findContours()查找轮廓
  14. LeetCode刷题(45)~位1的个数【布赖恩·克尼根算法】
  15. 李开复的《AI·未来》是本好书?我不见得
  16. (转发)一个硕士生是如何发表5篇sci的
  17. 电流反馈运算放大器介绍及RF(反馈电阻)的作用
  18. Msray-Plus采集工具帮您轻松获取目标受众的数据,让您的市场营销更加便捷
  19. 大数据集群将root用户切换至普通用户使用
  20. 内容匹配广告投放技术5:品牌展示广告(一)(百度文库课程)

热门文章

  1. 中国计量大学python期末试卷_中国大学慕课mooc用Python玩转数据期末考试搜题公众号答案...
  2. 专注于雾化技术研发,“益爽”获千万元天使轮融资...
  3. 知道坐标matlab三维作图,MATLAB知道(x,y,z)坐标怎样画三维图? 函数是什么? 希望知道的人能告诉我下,谢谢~~~...
  4. 如何使用计算机打印机共享的打印机驱动程序,如何解决连接共享打印机时“找不到驱动程序”...
  5. 在哪里可以看计算机系统型号,如何在 Windows 10 中查看计算机系统型号
  6. php去掉第一个空格,php怎么去除前面空格
  7. 有趣的计算机黑科技,这些不可思议又有趣好玩的黑科技,你造吗?
  8. 3升桶和5升桶,倒出4升的水
  9. 更换计算机电源线,生活小事不求人之教你自己更换电脑硬盘
  10. 洛谷P2658 汽车拉力比赛