设计模式之代理模式
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,首先来了解一下什么是代理模式?所谓代理模式就是对象通过代理来控制对真实对象的访问.举个生活中的例子,我们日常购物不会直接去联系厂家购买,而是通过网上商城,线下超市等形式间接的购买.那么这些商城或者说超
千家信息网最后更新 2024年11月14日设计模式之代理模式
首先来了解一下什么是代理模式?
所谓代理模式就是对象通过代理来控制对真实对象的访问.
举个生活中的例子,我们日常购物不会直接去联系厂家购买,而是通过网上商城,线下超市等形式间接的购买.那么这些商城或者说超市就是就是我们的代理.我们的代理会去联系厂家,帮我们代购商品.
设计模式包含一下三大核心模块:
Subject (抽象主题角色):它是一个真实主题和代理主题都要实现的一个抽象接口.这样在调用真实主题的地方都可以用代理主题.
Proxy(代理主题):我们的主角,它包含了对真实主题的引用,从而可以随意的操作真实主题对象,在需要的时候创建和删除真实的对象.而且代理主题提供了和真实主题相同的接口,以便替代真实的主题.代理主题往往还会执行更多的操作,比如在调用真实主题操作之前进行安全性校验,在执行真实主题的调用后,执行日志处理等等.
RealProject(真是主题):这是一个傲娇的小公主轻易不与外界接触,一切事宜都交给管家(Proxy)来处理.
代理模式的优点和缺点:
1. 能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。
2. 客户端可以针对抽象主题角色进行编程,增加和更换代理类无须修改源代码,符合开闭原则,系统具有较好的灵活性和可扩展性。
缺点:就是实现代理功能,增加了额外的工作量.
下面通过简单的案例来了解下代理模式的具体实现:
真实主题和代理主题都要实现的接口
public interface IBuy{ void buy();}
定义真实主题类
public class RealBuyer implements IBuy{ @Override public void buy(){ System.out.println("饿死了,我想吃蛋挞了"); }}
定义代理主题
public class ProxyBuyer implements IBuy{ private RealBuy realBuy = null; @Override public void buy(){ if(this.isEggTart()){ //是蛋挞 realBuy = new RealBuy(); realBuy.buy(); //买 this.recordHistory();//收藏一下 } } //检查是否是吃的 public boolean isEggTart(){ System.out.println("如果是蛋挞我就吃,不是我就不买!"); return true; } //买完了记录到我的购买记录中,以便日后在来一单 public void recordHistory(){ System.out.println("亲,这是你最喜欢的蛋挞,要不要再来一单?"); }}
客户端调用:
public class Main{ public static void main(String[] args){ IBuy buyer = new ProxyBuyer(); buyer.buy(); }}
主题
代理
模式
对象
就是
接口
厂家
商城
客户
客户端
用者
系统
缺点
角色
超市
这是
处理
联系
设计模式
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如何搭建数据处理服务器
将数据插入到数据库英文
武汉网络安全学院在哪个区
网络安全与执法做什么的
电子表格中提取第几数据库
25000软件开发文档
中华科技数据库期刊是核心期刊吗
重庆浪潮服务器虚拟化迁移云主机
网络技术软件开发初中生怎么上
原神小米渠道服云服务器
数据库建设方案评分标准
软件开发产品图
网络技术主要干什么的
湖北乐户网络技术有限公司
服务器数据保存期
互联网科技公司常用英语
安全漏洞服务器怎么上传
网络安全手抄报高年级
网络软件开发协议书
美国掌握的数据库
中国移动网络技术核心
网络技术中的man
山东港拓网络技术
美国移动服务器地址
网络安全自检自查工作总结
关于计算机网络安全重要性
fm2022开档数据库灰色
国家网络安全宣传周云课堂
网络安全手图片
网络技术总监年薪