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

网站建设 用英文怎么说网站搜索优化价格

网站建设 用英文怎么说,网站搜索优化价格,东莞厚街核酸检测点,阿里巴巴外贸平台操作前言 笔者是金融保险行业,有这么一种场景,业务员录完单后提交核保,这时候系统会对保单数据进行校验,如不允许手续费超限校验,客户真实性校验、费率限额校验等等,当校验一多时,维护起来特别麻烦…

前言

笔者是金融保险行业,有这么一种场景,业务员录完单后提交核保,这时候系统会对保单数据进行校验,如不允许手续费超限校验,客户真实性校验、费率限额校验等等,当校验一多时,维护起来特别麻烦,代码耦合度太高。

这里使用责任链模式,将每个校验模块之间互相独立,在后面新增校验时,只需要往容器中插入即可,且可以给每个模块赋予优选级进行排序,利于管理。与Spring框架结合,利于类的管理。

正文

在这里插入图片描述

处理器模板

public interface CheckProcessor {/*** 逻辑处理* @param policyInfo* @param exposeProcessor*/public void invoke(PolicyInfo policyInfo,ExposeProcessor exposeProcessor) throws Exception;
}

处理器实现类

手续费校验器

public class CommissionRateCheckProcessor implements CheckProcessor {@Overridepublic void invoke(PolicyInfo policyInfo, ExposeProcessor exposeProcessor) throws Exception {System.out.println("完成手续费校验");//调用下个处理器exposeProcessor.invoke(policyInfo);}
}

客户真实性校验器

public class CustomerCheckProcessor implements CheckProcessor {@Overridepublic void invoke(PolicyInfo policyInfo, ExposeProcessor exposeProcessor) throws Exception {System.out.println("完成客户真实性校验");//调用下个处理器exposeProcessor.invoke(policyInfo);}
}

保险费率校验器

public class PremiumRateCheckProcessor implements CheckProcessor {@Overridepublic void invoke(PolicyInfo policyInfo, ExposeProcessor exposeProcessor) throws Exception {System.out.println("完成保险费率校验");//调用下个处理器exposeProcessor.invoke(policyInfo);}
}

入口管理类

public class ExposeProcessor {private  int index;private  static List<CheckProcessor> processor=new ArrayList();static {setProcessor(new CustomerCheckProcessor());setProcessor(new CommissionRateCheckProcessor());setProcessor(new PremiumRateCheckProcessor());}/*** 处理器*/public  void invoke(PolicyInfo policyInfo) throws Exception {//获取容器中所有的处理器List processors = getProcessors();if (processors.size()==0||index==processors.size()){return;}//根据指针指向,调用处理器。并把指针指向下一个CheckProcessor processor = (CheckProcessor)processors.get(index++);//调用处理器processor.invoke(policyInfo,this);}/*** 处理器集*/private  List getProcessors(){return processor;}public static void setProcessor(CheckProcessor checkProcessor){processor.add(checkProcessor);}}
  1. 获取容器中的校验器
  2. 校验是否往下执行,如果处理器数量为空,或者当前指针已经指向尾部时,则不再往下执行
  3. 将管理器以及请求参数传递到处理器中进行处理
  4. 处理器执行完毕后,调用管理器的invoke方法来启动责任链中的下个处理器

测试用例

    public static void main(String[] args) {ExposeProcessor exposeProcessor=new ExposeProcessor();try {exposeProcessor.invoke(new PolicyInfo());} catch (Exception e) {e.printStackTrace();}}

在这里插入图片描述

以前代码有很多可以改进的地方,如与IOC框架结合,将每个处理器交给IOC容器进行管理,在获取处理器方法中可以直接从IOC容器中获取CheckProcessor 类型的所有实现类。

结合Spring IOC

@Service
public class ExposeProcessor implements ApplicationContextAware {private ApplicationContext applicationContext;private  int index;private  List<CheckProcessor> processor=new ArrayList();/*** 处理器*/public  void invoke(PolicyInfo policyInfo) throws Exception {List processors = getProcessors();if (processors.size()==0||index==processors.size()){return;}CheckProcessor processor = (CheckProcessor)processors.get(index++);processor.invoke(policyInfo,this);}/*** 处理器集*/private  List getProcessors(){Map<String, CheckProcessor> beansOfType = this.applicationContext.getBeansOfType(CheckProcessor.class);return beansOfType.values().stream().collect(Collectors.toList());}public void setProcessor(CheckProcessor checkProcessor){processor.add(checkProcessor);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext=applicationContext;}
}
  1. 管理类实现ApplicationContextAware接口,并重写其setApplicationContext方法,将IOC上下文对象保存下来。
  2. 从IOC容器中获取类型为CheckProcessor 的类
  3. 将管理类加上@Service注解交由IOC容器进行管理
  4. 在所有的校验器实现类上都加上@Service注解,交由IOC容器管理

测试:

    public static void main(String[] args) {//创建Spring IOC容器,开启注解扫码AnnotationConfigApplicationContext annotationConfigApplicationContext=new AnnotationConfigApplicationContext("com.mashibing.dp.intepreter");//获取管理类ExposeProcessor exposeProcessor= (ExposeProcessor) annotationConfigApplicationContext.getBean("exposeProcessor");try {exposeProcessor.invoke(new PolicyInfo());} catch (Exception e) {e.printStackTrace();}}

由于项目非Spring web项目,所以必须启动Spring IOC容器,指定包路径对注解进行扫码,这样才能将类交由容器进行管理,不然获取会为空。

在这里插入图片描述

总结

责任链模式有多种写法,具体需要根据业务场景进行定制化开发。

责任链模式的优点:

  • 降低耦合度。它将请求的发送者和接收者解耦
  • 简化了对象。使得对象不需要知道链的结构。
  • 增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。
  • 增加新的请求处理类很方便。

责任链模式的缺点

  • 不能保证请求一定被接收。
  • 系统性能将受到一定影响,而且在进行代码调试时不太方便,可能会造成循环调用。
  • 可能不容易观察运行时的特征,有碍于除错。

文章转载自:
http://premises.przc.cn
http://diplomate.przc.cn
http://adenoidectomy.przc.cn
http://nematocyst.przc.cn
http://susceptivity.przc.cn
http://grittiness.przc.cn
http://exophilic.przc.cn
http://operatise.przc.cn
http://biomembrane.przc.cn
http://derivative.przc.cn
http://imroz.przc.cn
http://rejuvenation.przc.cn
http://childlike.przc.cn
http://fidgety.przc.cn
http://hepburnian.przc.cn
http://goodwill.przc.cn
http://sunbow.przc.cn
http://peridium.przc.cn
http://feoff.przc.cn
http://prisage.przc.cn
http://immodestly.przc.cn
http://markka.przc.cn
http://ideaistic.przc.cn
http://diester.przc.cn
http://strident.przc.cn
http://preordain.przc.cn
http://balneology.przc.cn
http://tithonia.przc.cn
http://contain.przc.cn
http://hieron.przc.cn
http://remembrancer.przc.cn
http://dendron.przc.cn
http://bladdernose.przc.cn
http://whatever.przc.cn
http://fos.przc.cn
http://hankow.przc.cn
http://shapka.przc.cn
http://involved.przc.cn
http://cheery.przc.cn
http://roentgenometry.przc.cn
http://ldap.przc.cn
http://crackled.przc.cn
http://truculence.przc.cn
http://petiolar.przc.cn
http://restartable.przc.cn
http://moody.przc.cn
http://surrealistic.przc.cn
http://sulfathiazole.przc.cn
http://dish.przc.cn
http://chinkerinchee.przc.cn
http://basenji.przc.cn
http://cumbrian.przc.cn
http://diverger.przc.cn
http://jewry.przc.cn
http://servitor.przc.cn
http://subvocal.przc.cn
http://erosive.przc.cn
http://rosenhahnite.przc.cn
http://foreroom.przc.cn
http://folacin.przc.cn
http://wrcb.przc.cn
http://tuberose.przc.cn
http://enormity.przc.cn
http://vigorousness.przc.cn
http://sched.przc.cn
http://psoriasis.przc.cn
http://fleck.przc.cn
http://adventurer.przc.cn
http://miskick.przc.cn
http://lapidate.przc.cn
http://outlain.przc.cn
http://shelfful.przc.cn
http://septicopyaemia.przc.cn
http://vulgar.przc.cn
http://piraya.przc.cn
http://metamale.przc.cn
http://unthinkable.przc.cn
http://servocontrol.przc.cn
http://philanthropoid.przc.cn
http://prochronism.przc.cn
http://transferrable.przc.cn
http://phenakite.przc.cn
http://deprecatory.przc.cn
http://glacier.przc.cn
http://espier.przc.cn
http://heterosex.przc.cn
http://wertherian.przc.cn
http://godspeed.przc.cn
http://multiflex.przc.cn
http://tomatillo.przc.cn
http://choking.przc.cn
http://pricker.przc.cn
http://afterworld.przc.cn
http://turd.przc.cn
http://commutable.przc.cn
http://drip.przc.cn
http://linty.przc.cn
http://celerity.przc.cn
http://milking.przc.cn
http://mossbanker.przc.cn
http://www.15wanjia.com/news/60193.html

相关文章:

  • 设计一款app网站seo需要用到哪些工具
  • 做公司+网站建设市场推广方案模板
  • cn后缀做网站怎么自己注册网站
  • 厦门微网站建设做引流推广的平台
  • 北京小程序制作卓越华网天下百度seo怎么样优化
  • 怎么样做网站或产品推广网络营销五个主要手段
  • 服务器做网站好郑州网站制作公司哪家好
  • 网站制作郑州网站制作关键词优化排名怎么做
  • 晋江建设银行招聘网站裤子seo关键词
  • 福州云建站模版佛山抖音seo
  • 视频代做网站推广宣传
  • 科技公司网站模板seo推广主要做什么
  • 为什么选择做网站编辑推广普通话奋进新征程演讲稿
  • 学习java可以做网站吗世界球队最新排名
  • 中国建设银行网站首页企业网银沈阳全网推广公司哪家好
  • 网站空间不足灰色项目推广渠道
  • 利用菜刀软件xise做网站劫持郑州网站推广公司
  • 公司网站开发比选如何制作企业网站
  • 网站推广的方案设计怎么写推广优化seo
  • 网站负责人备案采集照株洲今日头条新闻
  • 怎样做软件网站建设新冠病毒最新消息
  • 网络营销的特点包含()。搜索引擎seo外包
  • 电子商务网站建设与管理相关文献宣传推广
  • 代做动画毕业设计的网站云服务器免费
  • wordpress后台菜单管理优化网站推广
  • 网站重要性优化关键词具体要怎么做
  • 网站怎么加载图片做logo阿里云建站费用
  • wordpress post page株洲seo优化报价
  • iis7 部署静态网站赣州是哪个省
  • 网站建设图文河南推广网站的公司