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

网站制作问题 图片版权公关公司排行榜

网站制作问题 图片版权,公关公司排行榜,武汉市新闻最新消息,做好门户网站建设代理模式学习笔记 什么是代理? 代理是一种设计模式,用户可以通过代理操作,而真正去进行处理的是我们的目标对象,代理可以在方法增强(如:记录日志,添加事务,监控等) 拿一…

代理模式学习笔记

什么是代理?

代理是一种设计模式,用户可以通过代理操作,而真正去进行处理的是我们的目标对象,代理可以在方法增强(如:记录日志,添加事务,监控等)

拿一个例子说话。

Uservice.java:接口,有个一保存用户的接口

public interface UserService {void save();
}

实现类

public class UserServiceImpl implements UserService {@Overridepublic void save() {System.out.println("添加User");}
}

如果现在提出一个需求,需要在Service方法上都要记录日志。那常规做法就是在方法上加上记录日志的逻辑。

public class UserServiceProxy implements UserService {@Overridepublic void save() {System.out.println("开启日志--");System.out.println("添加User");}
}

但是这样,如果接口有很多方法。那就要每一个方法都要去添加这段逻辑。

这个时候就需要请我们的代理来做了,用户通过代理去调用方法,代理就去找目标方法去做事

public class UserServiceProxy  implements UserService {private UserService target;public UserServiceProxy(UserService target) {this.target = target;}public void save(){System.out.println("开启日志");target.save();}
}
public class Main {public static void main(String[] args) {UserServiceProxy userServiceProxy = new UserServiceProxy(new UserServiceImpl());userServiceProxy.save();}
}

这样在使用的时候直接传入我们的目标对象给代理,就能每一个方法都能记录日志,其实这个就是静态代理,代理分为静态代理和动态代理两种。静态代理的特点就是要实现接口,如果接口后面要进行拓展修改,就需要我们去手动修改代理对象的方法。

所以这时候就需要动态代理了。

静态代理

上面以及介绍了静态代理了

动态代理

动态代理的特定就是不需要实现接口,但是需要使用JDK的api,用到里面的Proxy

Proxy.newProxyInstance()

参数1ClassLoader:类装载器

参数2interfaces:代理类的接口

参数3InvocationHandler:方法调用执行器

image-20250129233250820

将上述类中方法用动态代理的方式改写

public class UserServiceProxy{UserService userService = new UserServiceImpl();public UserService getInstant(){return (UserService)Proxy.newProxyInstance(UserServiceProxy.class.getClassLoader(), userService.getClass().getInterfaces(),new InvocationHandler() {/*** @param proxy 代理对象 --- UserServiceProxy** @param method 代理对象调用的方法** @param args 方法参数** @return* @throws Throwable*/@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("开启日志--");return method.invoke(userService, args);}});}
}

调用处:

public class Main {public static void main(String[] args) {UserServiceProxy userServiceProxy = new UserServiceProxy();UserService proxyInstant = userServiceProxy.getInstant();proxyInstant.save();}
}

运行结果:

image-20250129235113045

http://www.hrbkazy.com/news/37813.html

相关文章:

  • 如何做好网站内容优化微营销软件
  • 台州专业制作网站企业管理咨询
  • wordpress中文名烟台seo外包
  • 泉港做网站公司seo内链优化
  • 怎样给网站做下载百度搜索
  • wap手机网站慈溪seo
  • 国家企业信息系统公示系统下载seo网站优化技术
  • 效果好的网站建设seo型网站
  • 淘宝做的代码能在其他网站用吗市场营销方案怎么做
  • WordPress P站电商网站对比表格
  • 网站开发需要会什么苏州seo关键词优化报价
  • 公司商城网站建设seo工作内容
  • 如何做表白网站的教程香港旺道旺国际集团
  • 成都vr 网站开发网络营销的模式有哪些
  • 衡水哪里做网站网站网址查询工具
  • 招生就业网站开发详情爱站查询
  • vue做网站的实例百度网站客服
  • 哈尔滨网站建设费用百度推广时间段在哪里设置
  • 如何看织梦做的网站的源码建设网站的网络公司
  • 网站建设公司开发企业北京网站企业网站注册
  • 代加工接订单网站软文写作的十大技巧
  • 网站打开速度与服务器谷歌关键词挖掘工具
  • 网站建设 乐视搜索引擎营销方法有哪些
  • ps做游戏下载网站2023年12月疫情又开始了吗
  • 广东网站建设联系电话临沂头条新闻今日头条
  • 短视频平台的运营策略有哪些搜索引擎优化什么意思
  • 一个新的网站怎么做SEO优化国产免费crm系统有哪些在线
  • 南山做网站关于枪seo网站优化是什么
  • 怎样做网站安全测试百度搜索风云榜小说总榜
  • 哪里有免费的域名注册建网站最新天气预报最新消息