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

网站流量通道今天最新新闻报道

网站流量通道,今天最新新闻报道,女孩学网站开发与运营方向怎么样,宜宾做网站代理模式 描述基本使用使用 动态代理基于JDK的动态代理 描述 说到代理模式,Spring AOP 就是一种基于动态代理的实现。 基于原有方法进行功能增强的一种模式。 基本使用 定义原有业务接口 public interface IService {void action(); }定义原有业务类 public cl…

代理模式

  • 描述
    • 基本使用
    • 使用
  • 动态代理
    • 基于JDK的动态代理

描述

说到代理模式,Spring AOP 就是一种基于动态代理的实现。
基于原有方法进行功能增强的一种模式。

基本使用

  • 定义原有业务接口
public interface IService {void action();
}
  • 定义原有业务类
public class DefaultService implements IService{@Overridepublic void action() {System.out.println("action.....");}
}
  • 定义代理类(直接在代理类中增强)
public class ProxyService implements IService{private IService service;public ProxyService() {this.service = new DefaultService();}@Overridepublic void action() {this.actionBefore();service.action();}private void actionBefore() {System.out.println("actionBefore...");}
}
  • 基于已有的增强接口增强(接口的本质就是能力,如果一个类要使用一个能力,则实现这个接口即可
public interface IProxy {void ens();
}
public class EnsProxyService implements IService, IProxy {private IService service;public EnsProxyService() {this.service = new DefaultService();}@Overridepublic void action() {this.ens();service.action();}@Overridepublic void ens() {System.out.println("ens...");}
}

使用

public class Sample {public static void main(String[] args) {IService service = new ProxyService();service.action();}
}

动态代理

所谓动态代理,不必在编码阶段把代理类生成出来,而是代码运行时,动态创建的代理对象。

基于JDK的动态代理

基于JDK的动态代理,需要代理的类必须声明接口。

  • 声明接口
public interface IBizService {void biz();
}
  • 声明实现类
public class DefaultBizService implements IBizService{@Overridepublic void biz() {System.out.println("biz....");}
}
  • 基于JDK动态代理接口声明代理规则
public class BizInvocationHandler implements InvocationHandler {private Object obj;// 传入要代理的对象public BizInvocationHandler(Object obj) {this.obj = obj;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("invoke before...");Object result = method.invoke(obj, args);System.out.println("invoke after...");return result;}
}
  • 使用
public class Sample {public static void main(String[] args) {IBizService bizService = new DefaultBizService();IBizService proxyInstance = (IBizService) Proxy.newProxyInstance(bizService.getClass().getClassLoader(), bizService.getClass().getInterfaces(), new BizInvocationHandler(bizService));proxyInstance.biz();}
}
  • 创建代理对象的过程实际还能封装(具有业务含义的封装需与对应的BizInvocationHandler绑定)
  • 声明通用接口
public interface IdyProxy<T> {T getProxy(T obj);
}
  • 声明绑定handler的具体接口
public class BizDyProxy<T> implements IdyProxy<T> {@Overridepublic T getProxy(T obj) {T proxyInstance = (T) Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), new BizInvocationHandler(obj));return proxyInstance;}
}
  • 使用
public class Sample {public static void main(String[] args) {IBizService bizService = new DefaultBizService();
//        IBizService proxyInstance = (IBizService) Proxy.newProxyInstance(bizService.getClass().getClassLoader(), bizService.getClass().getInterfaces(), new BizInvocationHandler(bizService));
//        proxyInstance.biz();BizDyProxy<IBizService> dyProxy = new BizDyProxy<>();IBizService proxy = dyProxy.getProxy(bizService);proxy.biz();}
}
http://www.dtcms.com/wzjs/346788.html

相关文章:

  • 免费搭建网站的平台南京百度推广开户
  • 蚂蚁中国网站建设河南百度推广电话
  • 京东联盟需要自己做网站吗深圳龙岗区优化防控措施
  • 网站建设服务公司有哪些体彩足球竞彩比赛结果韩国比分
  • 做什么网站赚钱最快个人网页在线制作
  • 新吴区住房和城乡建设部网站上海关键词排名提升
  • 网站群建设的意义短视频拍摄剪辑培训班
  • 提供网站推广公司电话网络推广方式方法
  • 微商建立网站网络广告的类型有哪些
  • wordpress登录机制天津百度优化
  • 做网站需要日语版本吗教育培训网页设计
  • 做网站如何防止被坑郑州免费做网站
  • jsp网站开发简单代码网站文章优化技巧
  • 东莞樟木头哪里有做网站的缅甸今日新闻
  • 推荐企业手机网站建设手机怎么建网站
  • 海南做网站的公司广告公司职位
  • 在线装逼一键生成器免费seo推广软件
  • 学做卤菜网站环球资源网官方网站
  • 卖狗做网站什么关键词最好郑州网站关键词排名技术代理
  • 东莞网站建设+旅游百度推广登录平台客服
  • 网站运营的作用汕头网站推广排名
  • 国家企信网官网登录入口seo优化的内容有哪些
  • 竞猜网站建设班级优化大师下载安装
  • 北京住房和城乡建设部网站链接提取视频的网站
  • 高端网站制作公网络安全有名的培训学校
  • 男女做那个网站动态图整合营销传播最基础的形式是
  • 学习网页制作的网站seochinaz查询
  • 目前个人网站做地最好是哪几家今日国际新闻10条
  • 徐州网站开发公司快速排名优化seo
  • 做网站用到什么技术免费建网页