在现实编程中使用fluent风格
2015-09-07 20:43
399 查看
需求:
根据相应的条件查找对应的imsi,其中条件有多个满足即返回结果,如果不满足对对数据进行过滤,交由后续处理。 条件: 1.电话号码匹配,返回匹配结果,即匹配的imsi 2.根据电话号码生成imsi前缀,匹配imsi,如果多条,需进行后续处理 3.根据银行,卡号匹配imsi,如果多条,需进行后续处理 4.根据地区,匹配imsi,如果多条,需进行后续处理 5.根据姓名的摘要,匹配imsi,如果多条,即认为数据没有命中
设计:
在前面的条件中,所有的步骤都能结束整个查找流程,在上述的查找流程中,我引入了责任链的模式,该模式的类图为:职责链模式:使多个对象都有机会处理请求,将多个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止,使用该模式,可对查询条件进行组合,或者添加新的查询条件,而不影响别已有的结构。
使用:
public IMatcher buildMatchChain(String phone,String name,String areaCode,String bank,String card) throws Exception{ bank = BankCache.getInstance().get(bank); IMatcher imsiUserNameMatch = new ImsiUserNameMatch(name); //匹配姓名 IMatcher imsiAreaMatch = new ImsiAreaMatch(areaCode); //匹配地区 imsiAreaMatch.setNext(imsiUserNameMatch); // IMatcher preFixphoneImsiCardMatch = new PrefixPhoneImsiCardMatch(phone,bank, card); //匹配银行卡号 preFixphoneImsiCardMatch.setNext(imsiAreaMatch); IMatcher phoneImsiMatch = new PhoneImsiMatch(phone);//匹配手机号和IMSI phoneImsiMatch.setNext(preFixphoneImsiCardMatch); return phoneImsiMatch; }
使用fluent风格:
public IMatcher buildMatchChain2(String phone,String name,String areaCode,String bank,String card) throws Exception{ bank = BankCache.getInstance().get(bank); return new PhoneImsiMatch(phone) .setNext(new PrefixPhoneImsiCardMatch(phone,bank, card)) .setNext(new ImsiAreaMatch(areaCode)) .setNext(new ImsiUserNameMatch(name)); }
fluent风格在知名开源框架中的使用:
1.在google guava中,各种api接口都是采用该风格2.在netty api中,也是采用该种风格
3.在apache curator,也是采用风格
相关文章推荐
- POJ 1947 Rebuilding Roads
- 《APUE》读书笔记—进程控制
- 禁止Ubuntu开机进入guest session
- unique函数
- LeetCode(60) Permutation Sequence
- LeetCode(60) Permutation Sequence
- Codeforces 156D Clues (图论, 并查集, 卡特兰数)
- UISearchBar的基本用法
- easyui 布局
- EasyUI中datagrid控件的Editor
- build.gradle 各种错误解决总结
- 步骤条的实现原理及AliceUI中步骤条Step的应用
- UINavigationControllr 【导航控制器】自己的见解
- Android中的权限管理(基于uid gid gids setUid)
- UIday1001:UITableView 2 编辑(添加、删除)、移动、UITableViewController
- UICollectionView用法总结
- 让 IE9 以下的浏览器支持 Media Queries
- "this class is not key value coding-compliant for the key ..."问题的解决
- squeeze函数
- easyui的combobox兼容火狐浏览器