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

桓台县城乡建设局网站关键词seo优化

桓台县城乡建设局网站,关键词seo优化,个人网站制作成品图片,php 外贸商城网站建设代理可以进一步划分为静态代理和动态代理,代理模式在实际的生活中场景很多,例如中介、律师、代购等行业,都是简单的代理逻辑,在这个模式下存在两个关键角色: 目标对象角色:即代理对象所代表的对象。 代理…

代理可以进一步划分为静态代理和动态代理,代理模式在实际的生活中场景很多,例如中介、律师、代购等行业,都是简单的代理逻辑,在这个模式下存在两个关键角色:

目标对象角色:即代理对象所代表的对象。

代理对象角色:内部含有目标对象的引用,可以操作目标对象

一、静态代理

目标对象角色

public class Target {public void execute(){System.out.println("Target execute...");}
}

代理对象角色

public class ProxyObj {private Target target;public  ProxyObj(Target target){this.target=target;}public void invoke(){before();target.execute();after();}public void before(){System.out.println("before...");}public void after(){System.out.println("after...");}
}
public class Proxy {public static void main(String[] args) {Target target = new Target();ProxyObj proxy = new ProxyObj(target);proxy.invoke();}
}

代理模式的本质是在目标对象的方法前后置入增强操作

二、动态代理

首先看两个核心类,这里简述下概念,看完基本过程再细聊:

  • Proxy-创建代理对象,核心参数:

    • ClassLoader:(目标类)加载器;
    • Interfaces:(目标类)接口数组;
    • InvocationHandler:代理调用机制;
  • InvocationHandler-代理类调用机制:

    • invoke:这个上篇说的反射原理;
    • method:反射类库中的核心API;

目标对象和接口

interface IUser {Integer update (String name) ;
}
class UserService implements IUser {@Overridepublic Integer update(String name) {Integer userId = 99 ;System.out.println("UserId="+userId+";updateName="+name);return userId ;}
}

代理对象执行机制

class UserHandler implements InvocationHandler {private Object target ;public UserHandler (Object target){this.target = target ;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("before()...");Object result = method.invoke(target, args);System.out.println("after()...");return result;}
}

具体使用:

public class Proxy02 {public static void main(String[] args) {/** 生成$Proxy0的class文件*/System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");/** 目标对象信息*/IUser userService = new UserService();ClassLoader classLoader = userService.getClass().getClassLoader();Class<?>[] interfaces = UserService.class.getInterfaces() ;/** 创建代理对象*/InvocationHandler userHandler = new UserHandler(userService);/** 代理类对象名* proxyClassName=com.java.proxy.$Proxy0*/String proxyClassName = Proxy.newProxyInstance(classLoader,interfaces,userHandler).getClass().getName();System.out.println("proxyClassName="+proxyClassName);/** 具体业务实现模拟*/IUser proxyUser1 = (IUser) Proxy.newProxyInstance(classLoader,interfaces,userHandler);IUser proxyUser2 = (IUser) Proxy.newProxyInstance(classLoader,interfaces,userHandler);proxyUser1.update("cicada") ;proxyUser2.update("smile") ;}
}

 

JDK源码

IUser proxyUser = (IUser) Proxy.newProxyInstance(classLoader,interfaces,userHandler);

Proxy提供的静态方法newProxyInstance(),通过各个参数的传入,构建一个新的代理Class对象,即$Proxy0类的结构信息,这里再回首看下三个核心参数:

  • ClassLoader:基于JVM运行过程,所以需要获取目标类UserService的类加载器;

  • Interfaces:目标类UserService实现的接口,从面向对象来考虑,接口与实现分离,代理类通过实现IUser接口,模拟目标类的需求;

  • InvocationHandler:代理类提供的功能封装即UserHandler,可以在目标方法调用前后做增强处理

http://www.yidumall.com/news/70201.html

相关文章:

  • 潢川网站建设推广普通话心得体会
  • 女做受视频网站用手机制作自己的网站
  • 太原网站建设制作公司哪家好新媒体营销
  • asp网站后台安全退出广告公司推广文案
  • ae做动画教程网站百度禁止seo推广
  • 做外贸网站违法吗淘宝一个关键词要刷多久
  • 网站栏目建设存在的问题网站优化外包费用
  • 网站手机端的优势网络营销一个月能挣多少钱
  • 泉州网站建设案例青岛排名推广
  • 私人可以做org后缀网站吗网络营销策略概念
  • 网站在百度无法验证码怎么办seo排名优化推荐
  • 中山市哪家公司做网站招商外包公司
  • 好看的移动端网站成都网站关键词推广优化
  • 网站swf怎么做软文写作是什么意思
  • 东莞app培训网站建设品牌营销活动策划方案
  • 网站建设上传视频百度竞价推广公司
  • 专业网站设计是什么营销排名seo
  • 南昌 定制网站搜索引擎的优化和推广
  • 做吉祥物的网站厦门网站优化
  • 网络公司注册费用seo在线排名优化
  • 中企动力做网站靠谱吗站长seo工具
  • 树莓派做网站服务器seo推广外包
  • 廊坊做网站公司小学生摘抄新闻2024
  • 一站式网站管家2023年国家免费技能培训
  • 网站平台建设费用的会计核算搜索推广开户
  • 梧州网站建设定制中国网新山东
  • 公司官网制作需要多少钱一个seo优化网站查询
  • 电影网站源码程序网络营销渠道名词解释
  • 阳江网站开发网络营销模式
  • 品划网络做网站谷歌seo和百度seo