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

网站建设售前怎么做好泰安新闻出版小镇

网站建设售前怎么做好,泰安新闻出版小镇,为什么做彩票网站会被提示危险,wordpress怎么设置发布时间文章目录 责任链模式工厂模式适配器模式代理模式模版方法观察者模式构造器模式 责任链模式 Spring中的Aop的通知调用会使用责任链模式责任链模式介绍 角色#xff1a;抽象处理者#xff08;Handler#xff09;具体处理者#xff08;ConcreteHandler1#xff09;客户类角… 文章目录 责任链模式工厂模式适配器模式代理模式模版方法观察者模式构造器模式 责任链模式 Spring中的Aop的通知调用会使用责任链模式责任链模式介绍 角色抽象处理者Handler具体处理者ConcreteHandler1客户类角色ClientSpring源码介绍 spring中Aop的责任链模式相对于传统的责任链模式做了一定的改造。 传统的设计模式抽象处理者会有一个方法设置和获取具体处理者的下一个处理者的方法。 如 public abstract class Handler {private Handler next;public Handler getNext() {return next;}public void setNext(Handler next) {this.next next;}//处理请求的方法public abstract void handleRequest(String request); }但是Spring中的责任链模式没有这两个方法而是抽出一个公共的处理方法方法内有数组和下标来完成链式。 public class ReflectiveMethodInvocation implements ProxyMethodInvocation, Cloneable {// 环绕通知类protected final List? interceptorsAndDynamicMethodMatchers;// 下标private int currentInterceptorIndex -1; /*** 递归获取通知然后执行* return* throws Throwable*/OverrideNullablepublic Object proceed() throws Throwable {// We start with an index of -1 and increment early.// 从索引为-1的拦截器开始调用并按序递增如果拦截器链中的拦截器迭代调用完毕开始调用target的函数这个函数是通过反射机制完成的// 具体实现在AopUtils.invokeJoinpointUsingReflection方法中if (this.currentInterceptorIndex this.interceptorsAndDynamicMethodMatchers.size() - 1) {return invokeJoinpoint();}// 获取下一个要执行的拦截器沿着定义好的interceptorOrInterceptionAdvice链进行处理Object interceptorOrInterceptionAdvice this.interceptorsAndDynamicMethodMatchers.get(this.currentInterceptorIndex);if (interceptorOrInterceptionAdvice instanceof InterceptorAndDynamicMethodMatcher) {// Evaluate dynamic method matcher here: static part will already have// been evaluated and found to match.// 这里对拦截器进行动态匹配的判断这里是对pointcut触发进行匹配的地方如果和定义的pointcut匹配那么这个advice将会得到执行InterceptorAndDynamicMethodMatcher dm (InterceptorAndDynamicMethodMatcher) interceptorOrInterceptionAdvice;Class? targetClass (this.targetClass ! null ? this.targetClass : this.method.getDeclaringClass());if (dm.methodMatcher.matches(this.method, targetClass, this.arguments)) {return dm.interceptor.invoke(this);}else {// Dynamic matching failed.// Skip this interceptor and invoke the next in the chain.// 如果不匹配那么proceed会被递归调用知道所有的拦截器都被运行过位置return proceed();}}else {// Its an interceptor, so we just invoke it: The pointcut will have// been evaluated statically before this object was constructed.// 普通拦截器直接调用拦截器将this作为参数传递以保证当前实例中调用链的执行return ((MethodInterceptor) interceptorOrInterceptionAdvice).invoke(this);}} }其中的最后一句 // 普通拦截器直接调用拦截器将this作为参数传递以保证当前实例中调用链的执行 return ((MethodInterceptor) interceptorOrInterceptionAdvice).invoke(this);MethodInterceptor就是抽象处理者 FunctionalInterface public interface MethodInterceptor extends Interceptor {/*** */Object invoke(MethodInvocation invocation) throws Throwable; }具体的执行者有 AspectJAfterAdvice、AspectJAfterReturningAdvice、AspectJAfterThrowingAdvice、AspectJMethodBeforeAdvice、AspectJAroundAdvice 工厂模式 Spring中的获取Bean就是工厂模式如BeanFactory获取工厂模式介绍 角色抽象产品具体产品抽象工厂具体工厂Spring源码介绍 抽象工厂 public interface BeanFactory {Object getBean(String name) throws BeansException;... }具体工厂 适配器模式 Spring中的根据通知的时候将Advisor适配为MethodInterceptor适配器介绍 角色目标接口抽象适配器具体适配器抽象源接口具体源接口适配器就是将源接口适配为目标接口Spring中的源码介绍 抽象适配器 public interface AdvisorAdapter {/*** 适配方法将Advisor适配为MethodInterceptor Advisor就是源接口MethodInterceptor就是目标接口*/MethodInterceptor getInterceptor(Advisor advisor); }具体适配器 class AfterReturningAdviceAdapter implements AdvisorAdapter, Serializable {Overridepublic boolean supportsAdvice(Advice advice) {return (advice instanceof AfterReturningAdvice);}Overridepublic MethodInterceptor getInterceptor(Advisor advisor) {AfterReturningAdvice advice (AfterReturningAdvice) advisor.getAdvice();return new AfterReturningAdviceInterceptor(advice);} }具体源接口 代理模式 cglib、gdk代理模版方法 Spring中的refresh方法中的postProcessFactory、onRefresh等观察者模式 Spring中的事件监听角色 抽象目标 具体目标 具体观察者 抽象观察者 抽象目标里面会有一个数组存放具体的观察者并且会有一个添加删除观察者的方法还有一个通知所有观察者的方法。具体目标需要通知观察者的时候遍历数组通知观察者Spring中的事件监听做了一定的变动 有四个角色 广播器其实就是我们的抽象目标包含了添加删除广播事件方法 监听器监听广播器广播的事件 事件 事件源触发事件的人将事件添加到广播器中 构造器模式 Spring中解析xml或者注解为BeanDefinition信息的时候会使用BeanDefinitionHandler类该类里面包含了一个 BeanDefinition 字段可以调佣BeanDefinitionHandler中的方法给该字段设值最后可以调用方法获取BeanDefinition
http://www.w-s-a.com/news/186620/

相关文章:

  • 投标建设用地是哪个网站微信小程序多少钱
  • 做玄幻封面素材网站我国数字经济报告
  • 手机网站返回跳转wordpress带颜色的文字
  • 微信群领券网站怎么做创意广告图片
  • 跟我一起做网站嘉兴做网站哪家好
  • 上海知名建站公司山东住房和建设庭网站
  • 深圳市城乡建设部网站首页平台设计方案怎么做
  • 深圳美食教学网站制作wordpress列表图显示标题
  • 怎么做网址导航网站沈阳高端做网站建设
  • 棋牌网站开发需要多少钱整网站代码 带数据 免费 下载
  • 网站建设 sql 模版猎头用什么网站做单
  • 河北保定建设工程信息网站wordpress 远程缓存
  • 手机网站开发之列表开发win7网站开发教程
  • 楚雄市住房和城乡建设局网站廊坊企业网站建设
  • 东莞规划局官方网站wordpress添加文章页不显示图片
  • 做企业网站要哪些人员百度商城网站建设
  • c语言软件开和网站开发区别多产品的网站怎么做seo
  • 收益网站制作移动互联网应用的使用情况表格
  • 专业的手机网站建设公司哪家好同城信息网站建设
  • 参与做网站的收获国外网站服务器建设
  • 西宁网站建设报价cu君博规范网站kv如何做
  • 毕业室内设计代做网站广东建设监理协会网站个人账号
  • 百度推广点击收费标准自己如何做网站优化
  • 安徽省建设监理网站广州澄网站建设公司
  • 做简历用什么网站俄罗斯搜索引擎浏览器官网入口
  • dw里响应式网站怎么做制作网站需要多少时间
  • 网站如何做双链路示范学校建设专题网站
  • 网站开发北京影视网站seo描述
  • 高端网站定制建设公司哪家好企业网络推广技巧
  • 建设公司网站的内容建筑设计图片