公司网站首页的图片怎么做,网站建设业务员,嵌入式开发软件有哪些,兰州搜狗推广解决问题的思维#xff1a;AOP
解决问题技术#xff1a;代理技术
代理技术太麻烦#xff0c;因此使用框架
Spring AOP框架#xff08;底层是代理技术#xff1a;jdk动态daili#xff0c;cglib#xff09; 代理模式是GoF23种设计模式之一。属于结构型设计模式。 代理…解决问题的思维AOP
解决问题技术代理技术
代理技术太麻烦因此使用框架
Spring AOP框架底层是代理技术jdk动态dailicglib 代理模式是GoF23种设计模式之一。属于结构型设计模式。 代理模式的作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下一个客户不想或者不能直接引用一个对象此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以在客户端和目标对象之间起到中介的作用并且可以通过代理对象去掉客户不应该看到的内容和服务或者添加客户需要的额外服务。 通过引入一个新的对象来实现对真实对象的操作或者将新的对象作为真实对象的一个替身这种实现机制即为代理模式通过引入代理对象来间接访问一个对象这就是代理模式的模式动机。 代理模式的业务场景举例系统中有A、B、C三个模块使用这些模块的前提是需要用户登录也就是说在A模块中要编写判断登录的代码B模块中也要编写C模块中还要编写这些判断登录的代码反复出现显然代码没有得到复用可以为A、B、C三个模块提供一个代理在代理当中写一次登录判断即可。代理的逻辑是请求来了之后判断用户是否登录了如果已经登录了则执行对应的目标如果没有登录则跳转到登录页面。【在程序中目标不但受到保护并且代码也得到了复用。】 代理模式中的角色 ● 代理类代理主题 ● 目标类真实主题 ● 代理类和目标类的公共接口抽象主题客户端在使用代理类时就像在使用目标类不被客户端所察觉所以代理类和目标类要有共同的行为也就是实现共同的接口。 代理模式的类图 代理模式的两种形式 静态代理 动态代理
静态代理
现在有这样一个接口和实现类
package com.sunsplanter.mall.service;public interface OrderService {/*** 生成订单*/void generate();/*** 查看订单详情*/void detail();/*** 修改订单*/void modify();
}OrderService接口的实现类
package com.sunsplanter.mall.service.impl;import com.sunsplanter.mall.service.OrderService;public class OrderServiceImpl implements OrderService {Overridepublic void generate() {try {Thread.sleep(1234);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(订单已生成);}Overridepublic void detail() {try {Thread.sleep(2541);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(订单信息如下******);}Overridepublic void modify() {try {Thread.sleep(1010);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(订单已修改);}
}其中Thread.sleep()方法的调用是为了模拟操作耗时。
项目已上线并且运行正常只是客户反馈系统有一些地方运行较慢要求项目组对系统进行优化。于是项目负责人就下达了这个需求。首先需要搞清楚是哪些业务方法耗时较长于是让我们统计每个业务方法所耗费的时长。
解决办法:使用代理模式这里采用动态代理为OrderService接口提供一个代理类