拦截器模式
2016-07-05 17:37
363 查看
做业务系统时,最好将每个步骤的代码封装在拦截器类中,这样可以减少重复代码
}
public interface Intercepter { public void intercept(IntercepterChain intercepterChain) throws Exception; }
public interface IntercepterChain { public void proceed() throws Exception; }
public interface JieSuanYeService { public JiesuanYueGetChannelsUsableResponse getJieSuanYePayChannelsUsable(); }
@Service("jieSuanYeService") public class JieSuanYeServiceImpl implements JieSuanYeService { Logger logger = LoggerFactory.getLogger(JieSuanYeServiceImpl.class); @Resource private List<Intercepter> jieSuanYeIntercepters; @Override @Profiled(tag = "service.getJieSuanYePayChannelsUsable") public JiesuanYueGetChannelsUsableResponse getJieSuanYePayChannelsUsable(){ try{ new IntercepterChainImpl(jieSuanYeIntercepters.iterator()).proceed(); }catch (Exception e){ logger.error("处理链路发生异常", e); ThreadLocalHolder.getJiesuanYueGetChannelsUsableResponse().getResult().setInfo(e.toString()); ThreadLocalHolder.getJiesuanYueGetChannelsUsableResponse().getResult().setSuccess(false); } return ThreadLocalHolder.getJiesuanYueGetChannelsUsableResponse(); }
}
/** * Created by liyiwen1 on 2016/7/1. */ public class IntercepterChainImpl implements IntercepterChain { private Iterator<Intercepter> iterator; @Override public void proceed() throws Exception{ if (iterator.hasNext()){ iterator.next().intercept(this); } } public IntercepterChainImpl(Iterator<Intercepter> iterator){ this.iterator = iterator; } public Iterator<Intercepter> getIterator() { return iterator; } public void setIterator(Iterator<Intercepter> iterator) { this.iterator = iterator; } }
相关文章推荐
- 新手编程入门一:用Exception来进行流程控制
- 业务系统设计之二:系统主控设计(上)
- 互联网广告系统综述五系统架构
- 业务系统之合同管理总结
- 实例分析:一整套业务系统产品技术架构的方法论
- DK、JRE、JVM的区别及JavaSE、JavaEE和JavaME的区别
- php host-v
- JAVA传入实体返回实体工具
- java下Class.forName
- Go语言圣经(中文版)读书笔记(一)
- QT多语言
- php 和权限设计有关的函数【php】
- Python面向对象编程2
- Java String 常量池问题的几个例子
- YII切换开发和生产环境(命令)
- Struts2 异常 Could not find action or result
- C++基础6 【继承】 类型兼容 satatic 多继承 虚继承 【多态】 案例 虚析构函数 重载重写重定义
- 基于Canvas绘图应用程序布局1
- Python 面向对象编程1
- Django现有模型增加字段