静态代理模式
静态代理
所谓静态代理可以理解为:在程序运行之前代理对象和目标对象的关系就已经确定下来,代理对象的字节码文件就已经存在,静态代理需要满足的条件:代理对象和目标对象需要继承同一个父类
,或者实现同一个接口
,如下图
静态代理示例
//目标接口
public interface ProxyInterface {
public void sendMsg();
}
//目标对象
public class SourceObject implements ProxyInterface{
@Override
public void sendMsg() {
System.out.println("send message!!");
}
}
//代理对象
public class ProxyDemo implements ProxyInterface{
private SourceObject target;
public ProxyDemo(ProxyInterface target){
this.target = (SourceObject) target;
}
//代理对象对目标对象的sendMsg方法进行增强
@Override
public void sendMsg() {
System.out.println("get phone number!");
target.sendMsg();
System.out.println("send the email!");
}
}
这就是一个简单的静态的代理模式的实现。代理模式中的所有角色(代理对象、目标对象、目标对象的接口)等都是在编译期就确定好的。
静态代理的用途 控制真实对象的访问权限 通过代理对象控制对真实对象的使用权限。
避免创建大对象 通过使用一个代理小对象来代表一个真实的大对象,可以减少系统资源的消耗,对系统进行优化并提高运行速度。
增强真实对象的功能 这个比较简单,通过代理可以在调用真实对象的方法的前后增加额外功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)