当前位置: 首页 > 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.tj-hxxt.cn/news/86191.html

相关文章:

  • 柳州网站建设百度广告联盟app下载官网
  • 微信公众号端网站开发优量汇广告平台
  • wordpress移动端代码网站优化 seo和sem
  • 做网站跟app竞价排名软件
  • 东莞网站制作公司怎么选择线上推广的好处
  • 红鹊豆网络网站站建设网站关键词seo优化公司
  • [网络收集]form表单及网站开发中常用js表单取值方法网页开发流程
  • 淘宝运营学习网站seo排名优化方法
  • 手机网页设计网站建设河北网站推广
  • 给境外赌博网站做代理seo自动推广软件
  • 网站营销案例长沙网站推广seo
  • 亚马逊网网站建设规划报告怎么建网站教程图解
  • 网站建设实习生怎么样公司网站制作教程
  • 博学云网站建设搜索指数的数据来源
  • 做富集分析的网站衡阳百度seo
  • 乡村建设相关网站北京建站优化
  • 武汉电子商务网站建设上海有名网站建站开发公司
  • 汕头多语种网站制作站长友情链接平台
  • 龙岩市住房和城乡建设厅网站成都网站seo费用
  • 做网站怎么写代码陕西新站seo
  • 微信公众平台微网站怎么做天津seo培训机构
  • tp5.1做的网站网址推广
  • 徐州 网站建设搜索引擎营销的方法有哪些
  • 微信商城下载手机系统优化
  • 附近广告公司喷绘刻字优化seo是什么
  • 成都高端网站建设公司seo按照搜索引擎的什么对网站
  • ssh框架做的家政服务网站网页设计与制作考试试题及答案
  • 企业+php网站建设app推广方法
  • 园林景观效果图网站武汉seo引擎优化
  • 网站模板下载大全商城网站建设