设计模式之代理模式
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,首先来了解一下什么是代理模式?所谓代理模式就是对象通过代理来控制对真实对象的访问.举个生活中的例子,我们日常购物不会直接去联系厂家购买,而是通过网上商城,线下超市等形式间接的购买.那么这些商城或者说超
千家信息网最后更新 2025年12月03日设计模式之代理模式
首先来了解一下什么是代理模式?
所谓代理模式就是对象通过代理来控制对真实对象的访问.
举个生活中的例子,我们日常购物不会直接去联系厂家购买,而是通过网上商城,线下超市等形式间接的购买.那么这些商城或者说超市就是就是我们的代理.我们的代理会去联系厂家,帮我们代购商品.
设计模式包含一下三大核心模块:
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安全错误
数据库的锁怎样保障安全
二调数据库土地
聊城网络安全孟祥君
社区支部网络安全保障工作会议
wow服务器邮件
计算机网络技术项目网络设计
数据库分布键多少个
数据库2019咋用
党外代表人士数据库太宽泛
华为云服务器怎么获得管理员权限
数据库操作定义
车载网络技术舒适性
深圳天众互联网科技公司
oracle数据库出口中国
深圳服务器硬件经理招聘
plc软件开发日常工作
2019网络安全宣传周信息
软件开发公司平顶山
易保网络技术需要经常出国吗
数据库的哪些技术
华为面试网络技术工程师
网络安全宣传周启动仪式怎么搞
网络安全中消息鉴别论文
连接远端数据库
提升网络安全保护能力
软件开发进度款怎么做账
数据库删除数据保留一部分数据
二手服务器cpu讲解
plc软件开发日常工作
计算机三级 网络安全技术
网络安全校园招聘