代理模式.
定义
由于某些原因需要给某对象提供一个代理以控制对该对象的访问,这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。
架构
抽象主题类、真实主题类、代理类
分类
{静态代理:手动创建代理类
{动态代理:使用反射动态创建
作用
保护真实对象,增强真实对象
代码
Subject(抽象主题)
/**
* 代理类和目标类共同实现的接口
*/
public interface Subject {
void show();
}
Target(真实主题)
/**
*
* Description:
*
* @author: mushi
* @Date: 2021/2/5 13:48
*/
public class Target implements Subject {
@Override
public void show() {
System.out.println("我是真实对象");
}
}
Proxy(代理)
/**
*
* Description:
*
* @author: mushi
* @Date: 2021/2/5 13:48
*/
public class Proxy implements Subject {
private Target target = new Target();
/**代理方法*/
@Override
public void show() {
before();
target.show();
after();
}
/**方法增强*/
public void before(){
}
public void after(){
}
}
Test
public class Test {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.show();
}
}
总结
代码实现的是静态代理的方式,
代理类和目标类实现共同的接口,在调用目标对象的时候可以通过代理对象去访问,代理类中还可以对目标对象具体方法执行前后做方法增强。
简单点说,在一个C中创建B对象,A想访问B,A可以通过C来访问B。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战