设计模式-代理模式
subject接口,定义要做什么
然后RealSubject和Proxy都实现Subject接口并实现里面的方法
但是Proxy内部有一个RealSubject的引用,并且Proxy的方法全部调用RealSubject的引用的方法
从调用者来看,它调用是Proxy的方法,但实际调用的还是RealSubject的方法,
Proxy就像RealSubject的代理人
代理模式就是这么来的
/** * @author wrj * @description * @Date 2021/12/2 5:35 下午 */ //测试类 public class ProxyTest { public static void main(String[] args) { Proxy proxy = new Proxy(); proxy.delete(); } }
//定义接口 interface CrudOperation { public Integer insert(); public Integer delete(); public Integer update(); public Object select(); }
//创建真实对象 class RealSubject implements CrudOperation { @Override public Integer insert() { return null; } @Override public Integer delete() { return null; } @Override public Integer update() { return null; } @Override public Object select() { return null; } }
//创建代理对象 class Proxy implements CrudOperation { private CrudOperation realSubject; public Proxy() { if (realSubject == null){ realSubject = new RealSubject(); } } @Override public Integer insert() { return realSubject.insert(); } @Override public Integer delete() { return realSubject.delete(); } @Override public Integer update() { return realSubject.update(); } @Override public Object select() { return realSubject.update(); } }
客户端一直操作的都是Proxy类,但实际调用的还是RealSubject类
在Proxy类中的select,insert等方法,可以做一些校验然后再决定要不要真正调用RealSubject的方法,这种场景就是使用代理模式来实现安全代理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端