设计模式:4.代理模式
代理模式
代理模式属于结构型模式
定义:为其他对象提供一种代理以控制对这个对象的访问
代理模式就是在操作原对象的时候,多出来一个代理类,用来对原对象的访问进行控制和替代原对象进行一些操作
模式类图
角色
- 抽象接口:able,定义业务接口
- 被代理类:Source
- 代理类:Proxy,用来对原对象的访问进行控制和替代原对象进行一些操作
- 客户端:Client,负责调用代理类
优点
- 职责清晰,被代理类只关心实际的业务逻辑,不关心其他事情
- 高扩展性,被代理类可以随意更改,不会影响到代理类对其的访问控制
抽象接口
被代理类和代理类都实现此接口
/*** @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.代理模式相关推荐
- 【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )
文章目录 前言 一.模拟 JVM 生成对应的 代理对象 二.模拟 JVM 生成对应的 代理对象 完整流程展示 1.目标对象接口 2.被代理对象 3.调用处理程序 4.模拟 JVM 生成的代理对象类 5 ...
- C++设计模式之代理模式
这篇文章主要介绍了C++设计模式之代理模式,本文讲解了什么是代理模式.代理模式的使用场合.代理模式的实现代码等内容,需要的朋友可以参考下 前言 青春总是那样,逝去了才开始回味:大学生活也是在不经意间就 ...
- python中代理模式分为几种_Python设计模式之代理模式实例详解
本文实例讲述了Python设计模式之代理模式.分享给大家供大家参考,具体如下: 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问 #!/usr/bin/env py ...
- 设计模式笔记——代理模式
设计模式笔记--代理模式 代理模式介绍 代理模式通常是介于请求方和提供方的一个中介系统,请求方是发送请求的一方,提供方是根据请求提供相应资源的一方 Web中的代理服务器就是一个例子,客户端向代理服务器 ...
- 「设计模式(五) - 代理模式」
「设计模式(五) - 代理模式」 一.处处可见的"代理" "代理"在平常生活司空见惯,点外卖,租房子找中介,买飞机票等等.基本上用手机就能完成,也就是不直接接触 ...
- Javascript 设计模式之代理模式【讲师辅导】-曾亮-专题视频课程
Javascript 设计模式之代理模式[讲师辅导]-969人已学习 课程介绍 随着 javascript ES6/7 的发布,很多老版本的设计模式的实现,今天来看是错误的,将被彻底. ...
- 设计模式之一代理模式
代理模式(代理设计模式) 代理模式的定义与特点 代理模式的结构与实现 代理模式(代理设计模式) 在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代 ...
- 23种设计模式7_代理模式之一静态代理
23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...
- Java中的设计模式:“代理模式”的理解
代理模式定义: 为其他对象提供一种代理以控制对这个对象的访问.在面向对象中,有时候直接访问一些对象比较麻烦,所以代理模式就是在这个对象上加上一个访问该对象的访问层.类似于很多明星的事务实际都是交给经纪 ...
- 三国杀与设计模式之代理模式(Proxy)
本人原博地址:http://blog.saymagic.cn/blog.php?id=17 三国杀案例:在五人局中,作为反贼的黄月英借黄忠的刀杀作为忠臣的夏侯惇,从这句话中我们可以总结出一个成语对不对 ...
最新文章
- RAID磁盘阵列的原理与RAID0搭建
- 微服务:Java EE的拯救者还是掘墓人?
- CentOS 漏洞修补
- 采购Invoice校验_事后借记和事后贷记
- BP: 通过SAP name拿到central person id
- 常见窗函数的C语言实现及其形状,适用于单片机、DSP作FFT运算
- LeetCode 450. 删除二叉搜索树中的节点
- hive表定义(3种方式)
- 一级计算机25套上网,全国计算机等级考试一级试题(25套)[1]
- IEEE-access 模板LaTeX Error: Something's wrong--perhaps a missing \item.
- win64位MySQL5.7.32下载、安装及配置
- electron 解压zip_electron 打包问题 解决
- U盘插入电脑识别不出来,如何解决?
- 某运输管理系统(TMS)概述
- java-获取电池电量
- 宝讯网捷:拼多多主图怎么加文字?
- 今天向大家推荐一款国产良心工具包 -- Hutool,让你的java变得更甜
- java有参构造_java的有参构造有什么用
- php中的分割字符串函数,关于PHP中两款字符串分割函数explode,str_split
- 计算机中打印机的类型,什么是打印机 打印机有哪些分类【详细介绍】