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

网站备案中 解析地址平台网站如何做推广方案设计

网站备案中 解析地址,平台网站如何做推广方案设计,网站排名首页前三位,昆明做网站魄罗科技文章目录 责任链模式工厂模式适配器模式代理模式模版方法观察者模式构造器模式 责任链模式 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.hkea.cn/news/14559477/

相关文章:

  • 西安网站建设市场tp框架做网站的优点
  • 义乌好品质自适应网站建设云南网站制作案例
  • 电影网站怎么做网站搜索 收录优化
  • 营销型网站单页域名转发网站
  • 精品资料网官方网站南充市房产信息网
  • 任务发布插件wordpressseo优化专家
  • 手机创建个人网站 免费网站域名备案需要什么
  • 手机网站建设分析厦门seo排名优化
  • 赣icp南昌网站建设html网站开发项目
  • 工信网备案网站不用源码做网站
  • 基础微网站开发动态龙采哈尔滨建站公司
  • 网站建设的页面要求vps网站能打开
  • 官方网站、门户网站是什么意思?youhosting wordpress
  • 移动应用开发公司网站模板百度贴吧怎么做推广
  • 免费的静态网站托管一二三四视频社区在线一中文
  • 网站内链怎么删除滨河网站建设
  • 南京免费发布信息网站wordpress小工具空格
  • 营销型设计网站网龙网络公司地址
  • 陕西住房和城乡建设部网站保定网站优化哪家好
  • 济南公司做网站goodnex drupal7企业wordpress模板
  • 衡水做网站技术建站软件排名
  • 如何用腾讯云主机做网站手机网站建设 小程序
  • 网站收录量深圳皇冠科技有限公司网站
  • 如何设置便于搜索引擎收录的网站结构自己模板做网站
  • 江西app网站建设网络营销方案规范
  • 天津市建设工程管理总队网站wordpress文章管理模板
  • 东莞企业网站建设预算大概多少永久的免费网站地址
  • 建设网站公司简介北京网页设计设计培训
  • 注册号域名后 怎么建设网站免费主页空间的网站
  • 3.0效果网站建设多少钱lnmp搭建后怎么做网站