设计模式之代理模式
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,首先来了解一下什么是代理模式?所谓代理模式就是对象通过代理来控制对真实对象的访问.举个生活中的例子,我们日常购物不会直接去联系厂家购买,而是通过网上商城,线下超市等形式间接的购买.那么这些商城或者说超
千家信息网最后更新 2025年01月24日设计模式之代理模式
首先来了解一下什么是代理模式?
所谓代理模式就是对象通过代理来控制对真实对象的访问.
举个生活中的例子,我们日常购物不会直接去联系厂家购买,而是通过网上商城,线下超市等形式间接的购买.那么这些商城或者说超市就是就是我们的代理.我们的代理会去联系厂家,帮我们代购商品.
设计模式包含一下三大核心模块:
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安全错误
数据库的锁怎样保障安全
用友服务器数据库转移
网络安全漫画幼儿园
服务器未系安全带
黎明杀机那个服务器玩家弱
端口转发服务器怎么安全
网络安全大学视频
梅州专业软件开发供应商
物流管理与计算机网络技术
服务器安全平台
软件开发prd文档
内网违规外联网络安全知识
如何建立队列研究数据库
混合数据库
宜昌网络安全科技馆
登录王者时出现服务器未响应
深圳网络安全吗教育平台
华为云服务器恢复出厂设置
软件开发产品的销售价值
软件开发犯法的事
oracle开本地数据库
佳博打印机 连接数据库
福建ai服务器
非关系型数据库费勒
服务器SIT测试
施乐c75背包服务器如何校色
服务器设置安全风险
网络安全自查整改情况报告
web数据库技术习题
jboss修改数据库连接
锦州淘小宝软件开发