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

seo网站建设微wordpress前台压缩图片

seo网站建设微,wordpress前台压缩图片,广告优化师没经验怎么面试,常州微信网站建设方案结构型模式 - 代理模式 (Proxy Pattern) 代理模式是一种结构型设计模式,它允许通过代理对象来控制对另一个对象(目标对象)的访问。代理对象充当目标对象的接口,客户端通过代理对象间接访问目标对象。 分为两大类 静态代理&#…

结构型模式 - 代理模式 (Proxy Pattern)

代理模式是一种结构型设计模式,它允许通过代理对象来控制对另一个对象(目标对象)的访问。代理对象充当目标对象的接口,客户端通过代理对象间接访问目标对象。


分为两大类

  • 静态代理(编译时就知道
  • 动态代理(Java程序运行时才知道

Java 静态代理

// 定义用户服务接口
public interface UserService {// 添加用户方法void addUser(String username);
}// 实现用户服务接口的具体类
public class UserServiceImpl implements UserService {@Overridepublic void addUser(String username) {System.out.println("添加用户: " + username);}
}// 用户服务的代理类
public class UserServiceProxy implements UserService {// 持有目标对象private UserService target;public UserServiceProxy(UserService target) {this.target = target;}@Overridepublic void addUser(String username) {// 在调用目标方法之前添加额外逻辑,这里是打印日志System.out.println("开始添加用户操作,记录日志...");// 调用目标对象的方法target.addUser(username);// 在调用目标方法之后添加额外逻辑,这里是打印日志System.out.println("添加用户操作完成,记录日志...");}
}// 测试静态代理的类
public class StaticProxyTest {public static void main(String[] args) {// 创建目标对象UserService target = new UserServiceImpl();// 创建代理对象,并将目标对象传入UserService proxy = new UserServiceProxy(target);// 通过代理对象调用添加用户方法proxy.addUser("张三");System.out.println();}
}

Java 动态代理又细分为两类

  • jdk 代理
  • cglib 代理
// jdk 方式import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;// 业务接口
public interface UserService {void addUser(String username);
}// 业务接口实现类
public class UserServiceImpl implements UserService {@Overridepublic void addUser(String username) {System.out.println("添加用户: " + username);}
}// 代理处理器
class UserServiceProxyHandler implements InvocationHandler {private final Object target;public UserServiceProxyHandler(Object target) {this.target = target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 在调用目标方法之前添加额外逻辑System.out.println("开始执行添加用户操作...");// 调用目标方法Object result = method.invoke(target, args);// 在调用目标方法之后添加额外逻辑System.out.println("添加用户操作执行完毕。");return result;}
}// 测试类
public class JdkProxyExample {public static void main(String[] args) {// 创建目标对象UserService target = new UserServiceImpl();// 创建代理处理器UserServiceProxyHandler handler = new UserServiceProxyHandler(target);// 生成代理对象UserService proxy = (UserService) Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),handler);// 调用代理对象的方法proxy.addUser("张三");}
}
// cglib 代理import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;// 业务类
public class UserManager {public void addUser(String username) {System.out.println("添加用户: " + username);}
}// 代理拦截器
public class UserManagerInterceptor implements MethodInterceptor {@Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {// 在调用目标方法之前添加额外逻辑System.out.println("开始执行添加用户操作...");// 调用目标方法Object result = proxy.invokeSuper(obj, args);// 在调用目标方法之后添加额外逻辑System.out.println("添加用户操作执行完毕。");return result;}
}// 测试类
public class CglibProxyExample {public static void main(String[] args) {// 创建 Enhancer 对象Enhancer enhancer = new Enhancer();// 设置父类enhancer.setSuperclass(UserManager.class);// 设置回调函数enhancer.setCallback(new UserManagerInterceptor());// 生成代理对象UserManager proxy = (UserManager) enhancer.create();// 调用代理对象的方法proxy.addUser("李四");}
}

对比分析

根本差异体现

代理机制

  • JDK 代理:依赖接口。在 JDK 代理示例中,UserService 是一个接口,UserServiceImpl 实现了该接口,代理对象是基于接口生成的。
  • CGLIB 代理:基于继承。在 CGLIB 代理示例中,UserManage 是一个普通类,代理对象是 UserManage 的子类。

方法调用

  • JDK 代理:在 InvocationHandler 的 invoke 方法中,使用 method.invoke(target, args) 调用目标对象的方法,这里的 target 是实际的目标对象。
  • CGLIB 代理:在 MethodInterceptor 的 intercept 方法中,使用 proxy.invokeSuper(obj, args) 调用目标类的方法,obj 是代理对象本身。

文章转载自:

http://DlTcfzc3.hxhrg.cn
http://3C5ryXSQ.hxhrg.cn
http://4DnWhquy.hxhrg.cn
http://fvcNsMhp.hxhrg.cn
http://QOWCTstN.hxhrg.cn
http://iRGN3ACr.hxhrg.cn
http://4CGuFNFw.hxhrg.cn
http://vKI1uqlP.hxhrg.cn
http://aGFyygUU.hxhrg.cn
http://Jos64ymO.hxhrg.cn
http://IpLmc9jO.hxhrg.cn
http://qiLBgKVm.hxhrg.cn
http://NZfaOWfK.hxhrg.cn
http://qxtJiFQ7.hxhrg.cn
http://KLNEbugT.hxhrg.cn
http://H3SJKe4I.hxhrg.cn
http://NL678pC5.hxhrg.cn
http://GzdsSGup.hxhrg.cn
http://cby2RfTc.hxhrg.cn
http://oAjZb0LG.hxhrg.cn
http://U9FsZAxk.hxhrg.cn
http://GBQnRpqm.hxhrg.cn
http://FdaZRQen.hxhrg.cn
http://Atws1nIp.hxhrg.cn
http://SG1uj2o0.hxhrg.cn
http://yAAFnB1c.hxhrg.cn
http://OxH2XI2H.hxhrg.cn
http://0c3iwocR.hxhrg.cn
http://hAE8Itmq.hxhrg.cn
http://2E8U3gnj.hxhrg.cn
http://www.dtcms.com/wzjs/618551.html

相关文章:

  • 重庆网站seo技术湖南门户网站建设
  • 做网站考什么赚钱网站设计设
  • 南京网站建设耐油橡胶板球场 技术支持 东莞网站建设
  • 四川城乡建设网站证件查询微网站开发多少钱
  • 大学网站建设说明书企业做网站和宣传册的作用
  • 废旧电脑做网站服务器微信开放平台开发文档
  • 分类网站发布信息有生意做吗做家教什么网站比较好
  • 代理厦门网站设计公司什么是网络营销?网络营销有什么特点?
  • 深圳住房建设局官方网站windows wordpress固定链接
  • 怎么做黑客把网站余额更改百度收录排名好的网站
  • 网站菜单设置怎么样才能找到网站后台网址
  • 电子商务网站建设及推广方案网络推广公司运营
  • 上海做网站的的公司有哪些镇江网站建设制作公司
  • 佛山网站改版薇晓朵 WordPress 国内项目计划
  • seosem是什么职位网络seo哈尔滨
  • 北京网站建设解决方案网页开发人员招聘
  • 境外网站服务器网站建设程序代码
  • 莱芜网站优化是什么seo网站提交
  • 网站开发培训深圳网站图片一般的像素
  • 网站运营主要是做什么响应式网站建设企业
  • 东莞常平做网站网络营销方式和方法
  • 中国空间站机械臂内蒙古互联网公司哪里最多
  • 建网站后如何运营网页设计师考证试题
  • 品牌网站建设黑白H狼网页设计论文的研究内容
  • 合肥网站建设晨飞php网页制作代码
  • 佛山百度网站排名优化适合wordpress的主机
  • 江苏运营网站建设业务有什么网站可以做设计赚钱吗
  • 网站建设wang.cd购车网站设计
  • 会网站开发维护的ps什么岗位网站设计什么样风格会高端些
  • 建筑设计网站素材电子商务网站的建设与流程