代理模式

代理模式属于结构型模式

定义:为其他对象提供一种代理以控制对这个对象的访问

代理模式就是在操作原对象的时候,多出来一个代理类,用来对原对象的访问进行控制和替代原对象进行一些操作
模式类图

角色

  1. 抽象接口:able,定义业务接口
  2. 被代理类:Source
  3. 代理类:Proxy,用来对原对象的访问进行控制和替代原对象进行一些操作
  4. 客户端:Client,负责调用代理类

优点

  1. 职责清晰,被代理类只关心实际的业务逻辑,不关心其他事情
  2. 高扩展性,被代理类可以随意更改,不会影响到代理类对其的访问控制

抽象接口
被代理类和代理类都实现此接口

/*** @author: linan* @date: 2020/5/25 10:20* @description: 手机接口*/
public interface Phoneable {/*** 打电话*/void call();
}

被代理类
实现Phoneable接口

/*** @author: linan* @date: 2020/5/25 10:19* @description: 被代理类*/
public class Phone implements Phoneable {@Overridepublic void call() {System.out.println("打电话");}
}

代理类
实现Phoneable接口,持有被代理类实例,提供validate()对被代理类的访问进行控制

/*** @author: linan* @date: 2020/5/25 10:19* @description: 被代理类*/
public class Proxy implements Phoneable {private Phone phone = new Phone();@Overridepublic void call() {if(validate()){phone.call();}System.out.println("结束通话");}/*** 检查手机号* @return*/private Boolean validate(){System.out.println("手机号验证通过");return Boolean.TRUE;}
}

验证

public static void main(String[] args) {Proxy proxy = new Proxy();proxy.call();
}

输出

手机号验证通过
打电话
结束通话

代理模式与装饰器模式的区别,代理模式主要是对原对象的访问进行控制,而装饰器模式主要是为了对原对象增加新的功能

参考:设计模式之禅:https://www.kancloud.cn/sstd521/design/193540

设计模式:4.代理模式相关推荐

  1. 【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )

    文章目录 前言 一.模拟 JVM 生成对应的 代理对象 二.模拟 JVM 生成对应的 代理对象 完整流程展示 1.目标对象接口 2.被代理对象 3.调用处理程序 4.模拟 JVM 生成的代理对象类 5 ...

  2. C++设计模式之代理模式

    这篇文章主要介绍了C++设计模式之代理模式,本文讲解了什么是代理模式.代理模式的使用场合.代理模式的实现代码等内容,需要的朋友可以参考下 前言 青春总是那样,逝去了才开始回味:大学生活也是在不经意间就 ...

  3. python中代理模式分为几种_Python设计模式之代理模式实例详解

    本文实例讲述了Python设计模式之代理模式.分享给大家供大家参考,具体如下: 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问 #!/usr/bin/env py ...

  4. 设计模式笔记——代理模式

    设计模式笔记--代理模式 代理模式介绍 代理模式通常是介于请求方和提供方的一个中介系统,请求方是发送请求的一方,提供方是根据请求提供相应资源的一方 Web中的代理服务器就是一个例子,客户端向代理服务器 ...

  5. 「设计模式(五) - 代理模式」

    「设计模式(五) - 代理模式」 一.处处可见的"代理" "代理"在平常生活司空见惯,点外卖,租房子找中介,买飞机票等等.基本上用手机就能完成,也就是不直接接触 ...

  6. Javascript 设计模式之代理模式【讲师辅导】-曾亮-专题视频课程

    Javascript 设计模式之代理模式[讲师辅导]-969人已学习 课程介绍         随着 javascript ES6/7 的发布,很多老版本的设计模式的实现,今天来看是错误的,将被彻底. ...

  7. 设计模式之一代理模式

    代理模式(代理设计模式) 代理模式的定义与特点 代理模式的结构与实现 代理模式(代理设计模式) 在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代 ...

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

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

  9. Java中的设计模式:“代理模式”的理解

    代理模式定义: 为其他对象提供一种代理以控制对这个对象的访问.在面向对象中,有时候直接访问一些对象比较麻烦,所以代理模式就是在这个对象上加上一个访问该对象的访问层.类似于很多明星的事务实际都是交给经纪 ...

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

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

最新文章

  1. RAID磁盘阵列的原理与RAID0搭建
  2. 微服务:Java EE的拯救者还是掘墓人?
  3. CentOS 漏洞修补
  4. 采购Invoice校验_事后借记和事后贷记
  5. BP: 通过SAP name拿到central person id
  6. 常见窗函数的C语言实现及其形状,适用于单片机、DSP作FFT运算
  7. LeetCode 450. 删除二叉搜索树中的节点
  8. hive表定义(3种方式)
  9. 一级计算机25套上网,全国计算机等级考试一级试题(25套)[1]
  10. IEEE-access 模板LaTeX Error: Something's wrong--perhaps a missing \item.
  11. win64位MySQL5.7.32下载、安装及配置
  12. electron 解压zip_electron 打包问题 解决
  13. U盘插入电脑识别不出来,如何解决?
  14. 某运输管理系统(TMS)概述
  15. java-获取电池电量
  16. 宝讯网捷:拼多多主图怎么加文字?
  17. 今天向大家推荐一款国产良心工具包 -- Hutool,让你的java变得更甜
  18. java有参构造_java的有参构造有什么用
  19. php中的分割字符串函数,关于PHP中两款字符串分割函数explode,str_split
  20. 计算机中打印机的类型,什么是打印机 打印机有哪些分类【详细介绍】

热门文章

  1. Proteus 8 Professional跑Keil uVision4的文件
  2. 什么是有限状态机FSM
  3. 什么是时间戳以及有什么用?
  4. 视频深度学习:行为识别指南
  5. 学习笔记=《你不知道的JavaScript(上卷)第二部分》第一章:关于this
  6. AI实现语音文字处理,PaddleSpeech项目安装使用 | 机器学习
  7. 使用iTOP进行CMDB资产管理
  8. 小红旗图标在excel如何输入_Excel用条件格式给数据插上小红旗
  9. window解决端口号被占用
  10. HTML5作业自我评价,web前端工程师自我评价简历范文