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

手机端网站建设教程视频教程软件开发外包公司

手机端网站建设教程视频教程,软件开发外包公司,手机微信如何制作小程序,wordpress免费网站代理模式学习笔记 什么是代理? 代理是一种设计模式,用户可以通过代理操作,而真正去进行处理的是我们的目标对象,代理可以在方法增强(如:记录日志,添加事务,监控等) 拿一…

代理模式学习笔记

什么是代理?

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

拿一个例子说话。

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.hkea.cn/news/167105/

相关文章:

  • 站长工具排名分析怎么创建公司网站
  • 网站建设标书四川seo哪里有
  • 接网站开发做多少钱建一个外贸独立站大约多少钱
  • wordpress表单录入seo报告
  • python做网站显示表格星巴克seo网络推广
  • 一个com的网站多少钱管理微信软件
  • 蒙阴网站建设软文代写网
  • 用python做一旅游网站南昌seo计费管理
  • 湖北省建设厅win10优化软件哪个好
  • 湖南企业建站系统平台软文有哪些发布平台
  • 南通 网络 公司网站真正免费建站
  • 做图骂人的图片网站网络服务
  • wordpress主标题副标题seo基础
  • 淮安做网站优化百度竞价排名是什么方式
  • 食品公司网站源码谷歌网页
  • 做网站用哪种代码比较好推广seo发贴软件
  • 3d效果图软件宁波seo行者seo09
  • 美国做按摩广告的网站网站优化教程
  • wordpress云建站教程信息流广告公司一级代理
  • 我有一个域名怎么做网站百度一下下载
  • 郑州网站建设品牌好安装百度到桌面
  • 株洲做网站定制百度灰色词优化排名
  • 上海网页设计公司兴田德润电话排名优化外包公司
  • 做360网站优化快推广普通话宣传语手抄报
  • 动态网站开发语言有哪些大学生创新创业大赛
  • 关键词推广公司网站网络排名优化方法
  • 福州移动网站建设网络营销推广工具有哪些
  • win2008sr怎么用iis做网站国外网站加速
  • 合肥++网站建设磐石网站seo
  • 万网主机怎么上传网站如何在百度上投放广告