当前位置: 首页 > wzjs >正文

wordpress 导航栏代码搜索引擎优化关键字

wordpress 导航栏代码,搜索引擎优化关键字,南宁网站建设哪家,江苏苏州建设行政主管部门网站Java设计模式之代理模式详解 一、代理模式核心思想 核心目标:为其他对象提供代理以控制访问,在不修改原始对象的基础上增强功能。如同明星经纪人,控制外界与目标对象的交互过程。 二、代理模式类图(Mermaid) 1. 静态…

Java设计模式之代理模式详解


一、代理模式核心思想

核心目标为其他对象提供代理以控制访问,在不修改原始对象的基础上增强功能。如同明星经纪人,控制外界与目标对象的交互过程。


二、代理模式类图(Mermaid)

1. 静态代理

委托调用
«interface»
Subject
+request()
RealSubject
+request()
Proxy
-realSubject: RealSubject
+request()

2. JDK动态代理

«interface»
InvocationHandler
+invoke(Object proxy, Method method, Object[] args)
Proxy
+newProxyInstance(ClassLoader, Class[], InvocationHandler)
Client

三、三种代理类型对比

代理类型实现方式特点
静态代理手动编写代理类简单直观,但类文件数量多
JDK动态代理反射+接口代理无需手动编码,但需实现接口
CGLIB代理字节码增强(继承方式)可代理无接口类,final类除外

四、代码实现示例

1. 静态代理示例(数据库查询场景)

// 抽象主题
interface DatabaseQuery {String query(String sql);
}// 真实主题
class RealDatabaseQuery implements DatabaseQuery {public String query(String sql) {// 实际数据库操作return "Result of: " + sql;}
}// 代理类
class DatabaseQueryProxy implements DatabaseQuery {private RealDatabaseQuery realQuery = new RealDatabaseQuery();public String query(String sql) {checkAccess();String result = realQuery.query(sql);logQuery(sql);return result;}private void checkAccess() {System.out.println("校验访问权限...");}private void logQuery(String sql) {System.out.println("记录查询日志: " + sql);}
}// 客户端调用
DatabaseQuery query = new DatabaseQueryProxy();
System.out.println(query.query("SELECT * FROM users"));

2. JDK动态代理示例(性能监控场景)

// 抽象主题
interface UserService {void addUser(String name);
}// 真实主题
class UserServiceImpl implements UserService {public void addUser(String name) {System.out.println("添加用户: " + name);}
}// InvocationHandler实现
class PerformanceHandler implements InvocationHandler {private Object target;public PerformanceHandler(Object target) {this.target = target;}public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {long start = System.currentTimeMillis();Object result = method.invoke(target, args);long duration = System.currentTimeMillis() - start;System.out.println(method.getName() + "方法耗时: " + duration + "ms");return result;}
}// 客户端调用
UserService realService = new UserServiceImpl();
UserService proxy = (UserService) Proxy.newProxyInstance(UserService.class.getClassLoader(),new Class[]{UserService.class},new PerformanceHandler(realService)
);proxy.addUser("张三");  // 输出执行耗时

五、模式优缺点分析

✅ 优势

  • 职责清晰:代理类专注控制逻辑,真实类专注业务
  • 扩展性强:无侵入式增强功能(日志、权限、缓存等)
  • 保护目标对象:限制直接访问敏感操作

❌ 缺点

  • 系统复杂度增加:引入额外代理层
  • 性能损耗:动态代理基于反射,执行效率略低

六、典型应用场景

  1. 远程代理:RMI(远程方法调用)
  2. 虚拟代理:延迟加载大文件/图片
  3. 保护代理:权限控制(如Spring Security)
  4. 缓存代理:缓存请求结果(如MyBatis缓存)
  5. AOP实现:Spring的事务管理/@Async异步处理

七、Mermaid序列图(动态代理流程)

Client Proxy InvocationHandler RealSubject methodCall() invoke() method.invoke() Client Proxy InvocationHandler RealSubject

八、代理模式 vs 其他模式

对比模式核心区别
装饰器模式增强对象功能,保持接口一致性
适配器模式改变对象接口
外观模式简化复杂子系统接口

九、Spring框架中的代理应用

Spring AOP代理机制

classDiagramclass UserServiceImpl {+addUser()}class ProxyFactoryBean {-target-interceptorNames}class MethodInterceptor {<<interface>>+invoke()}UserServiceImpl --> ProxyFactoryBean : 目标对象ProxyFactoryBean --> MethodInterceptor : 增强逻辑note for ProxyFactoryBean "默认JDK动态代理\n若无接口使用CGLIB"

十、常见问题解答

Q1:动态代理性能如何优化?

  • 缓存代理对象:避免重复创建
  • 使用CGLIB的FastClass机制:减少反射调用
  • 关闭调试信息System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "")

Q2:如何强制使用CGLIB代理?

Spring配置方式:

@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class AppConfig {}

Q3:代理模式如何实现懒加载?

class LazyInitProxy implements ImageLoader {private RealImageLoader realLoader;public void load(String path) {if (realLoader == null) {realLoader = new RealImageLoader(); // 延迟初始化}realLoader.load(path);}
}
http://www.dtcms.com/wzjs/512573.html

相关文章:

  • 公司网站建设完成通知会计培训班的费用是多少
  • 简单php企业网站源码广告海外推广
  • 知名网站建设公司好吗营销推广的公司
  • 上海网站 工作室室seo刷词工具在线
  • 010网站建设合肥今日头条新闻
  • 福建中江建设公司网站最近一周新闻热点回顾
  • 在哪个网站可以一对一做汉教百度竞价入口
  • 大连建设工程信息网官网入口石嘴山网站seo
  • wordpress屏蔽国外ip网站优化关键词
  • 做网站三级等保多少钱竞价托管服务多少钱
  • 北海网站建设服务商西安seo整站优化
  • wordpress 调用浏览数优化培训课程
  • 黑龙江营商监督建设局网站抖音广告推广怎么收费
  • 网络营销课程性质昆明seo工资
  • 东莞广告公司东莞网站建设福州seo代理计费
  • 做企业网站前期需要准备什么网络营销推广的优势
  • wordpress 邮件推送seo怎么赚钱
  • 网站设置默认首页营销必备十大软件
  • 营销策划公司品牌品牌seo推广
  • 广西 南宁 微信微网站开发如何给公司网站做推广
  • 对政府网站建设的整改报告成都官网seo服务
  • 广东购物网站建设淄博网络推广公司哪家好
  • 网站视频是什么软件做的网站点击快速排名
  • 做服装网站要那些照片如何创建网页链接
  • 创建公司网站 教程南京百度推广
  • 做互联网产品和运营必备的网站旅游景点推广软文
  • 百度做网站效果怎么样宣传推广的形式有哪些
  • 如何做病毒式网站推广深度优化
  • 企业做网站优势郑州seo哪家好
  • 渝中集团网站建设优化大师怎么提交作业