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

顺义公司网站建设wordpress建站心得

顺义公司网站建设,wordpress建站心得,tool站长工具,wordpress显示时间插件下载地址责任链模式 请求发送者和接收者连接成一条链#xff0c;一个对象处理完#xff0c;交给下一位#xff0c;沿着链传递请求#xff0c;这就是责任链模式。 角色 抽象处理者#xff08;Handler#xff09; 定义了处理请求的方法具体处理者#xff08;ContreteHandler一个对象处理完交给下一位沿着链传递请求这就是责任链模式。 角色 抽象处理者Handler 定义了处理请求的方法具体处理者ContreteHandler 包含下一个抽象处理者作为成员变量不同的处理者实现不同的处理逻辑处理完了就交给下一个 案例 数据检查者 在使用前端给后端传入的数据前都需要做校验比如数据完整性校验等等。一个一个 if-else 写起来比较麻烦请使用责任链模式优化代码编写体验。 工具类 Mapx import java.util.HashMap;public class MapxK, V extends HashMapK, V {public static Mapx init(String key, Object value) {return new Mapx().set(key,value);}public MapxK, V set(K key, V value){this.put(key, value);return this;} }Setx import java.util.HashSet;public class Setx extends HashSet {public static Setx init(Object obj){return new Setx().set(obj);}public Setx set(Object obj){this.add(obj);return this;} }ResREST接口返回格式生成器 import java.util.Map;public class Res {public static Map ok(String msg, int symbol, Object data) {return Mapx.init(code,200).set(symbol,symbol).set(data,data).set(type,ok);}public static Map fail(String msg, int symbol, Object data) {return Mapx.init(code,400).set(symbol,symbol).set(data,data).set(type,fail);} }Checker抽象处理者 import java.util.Map; import java.util.Set;public interface Checker {public Checker hint(String hint);public Checker symbol(int symbol);public Checker ignore(Object ign);public Map check();public Checker next(Checker nextChecker);}CompleteChecker完整性检查者 import java.lang.reflect.Field; import java.lang.reflect.Type; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set;public class CompleteChecker implements Checker{private Object suspicion;private String hint;private int symbol;private Set ign;private Checker nextChecker;public CompleteChecker(Object suspicion) {this.suspicion suspicion;}Overridepublic Checker hint(String hint) {this.hint hint;return this;}Overridepublic Checker symbol(int symbol) {this.symbol symbol;return this;}Overridepublic Map check() {String result this.is_complete(suspicion, ign);if (result!null){Map data Mapx.init(field, result);return Res.fail(hint, symbol, data);}if (nextChecker!null){return nextChecker.check();}return null;}Overridepublic Checker next(Checker nextChecker) {this.nextChecker nextChecker;return nextChecker;}public CompleteChecker ignore(Object ign){Set ignx (Set) ign;this.ign ignx;return this;}private String is_complete(Object obj, SetString ign){if(objnull){return Self;}if(ignnull){ign new HashSet();}Field[] fields obj.getClass().getDeclaredFields();Boolean rs true;for (Field field : fields) {field.setAccessible(true);Object fieldValue null;String fieldName ;Type fieldType null;try {fieldValue field.get(obj); //得到属性值fieldType field.getGenericType();//得到属性类型fieldName field.getName(); // 得到属性名 // System.out.println(属性类型 fieldType.getTypeName() ,属性名 fieldName ,属性值 fieldValue);} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}if(ign.contains(fieldName)){// System.out.println(fieldName 属性忽略检测);continue;}if (fieldValue null || fieldValue.equals()) { //只要有一个属性值不为null 就返回false 表示对象不为null // System.out.println(检测的成员变量中有空值); // System.out.println(fieldName 为空); // System.out.println(fieldName : fieldValue);return fieldName;}// 如果成员是列表if (fieldValue instanceof java.util.List) {if (((List?) fieldValue).size()0){return fieldName;}}}return null;} }Main public class Main {public static void main(String[] args) {User user new User(小靳, female, 20,new User(父亲,male,50,new User(爷爷, male, 70, null)));Checker checker new CompleteChecker(user).ignore(Setx.init(age)).hint(user不完整);checker.next(new CompleteChecker(user.father)).ignore(Setx.init(age)).hint(father不完整).next(new CompleteChecker(user.father.father)).ignore(Setx.init(age)).hint(grandfather不完整);System.out.println(检测结果: checker.check());} }Output: 检测结果: {msggrandfather不完整, symbol0, code400, data{fieldfather}, typefail}当然我这个案例的代码实现存在漏洞user.father为null的时候user.father.father是取不到的。 责任链模式的优缺点 优点 使得一个对象无需知道是其他哪一个对象处理其请求对象仅需知道该请求会被处理即可且链式结构由客户端创建  降低了系统的耦合度在系统中增加一个新的具体处理者无须修改原有系统源代码只需要在客户端重新建立链式结构即可  符合开闭原则 缺点 由于一个请求没有一个明确地接受者 无法保证它一定会被处理对于较长的职责链 系统性能有一定影响且不利于调试如果建立链不当可能会造成循环调用 导致系统进入死循环 应用场景 有多个对象处理同一个请求且无需关心请求的处理对象时谁以及它是如何处理的 比如各种审批流程可以动态地指定一组对象处理请求客户端可以动态创建职责链来处理请求还可以改变链中处理者之间的先后次序 比如各种流程定制
http://www.hkea.cn/news/14455507/

相关文章:

  • 重庆知名网站建设免费wordpress新建页面显示数据库
  • 不懂英文怎么做英文的seo网站公司网址注册一般需要多少钱
  • app免费制作网站模板快速网站建设费用
  • 湘潭城乡建设发展集团网站经典广告案例
  • 凡科做的网站好吗撩人的网站怎么做
  • 京东商城的网站怎么建设的网站建设 展滔科技大厦
  • 上海网站设计哪家好西安网页设计制作介绍
  • 商城开发网站免费个人网站建站源码
  • 框架布局技术制作一个网站从做系统后以前的网站打不开了怎么办
  • 住房和建设部官方网站网站建设接外包流程
  • 网站建设遇到问题解决方案猎头公司收费收费标准和方式
  • 怎么在电脑上做网站如何做营销策划方案
  • 网站建设的技巧淘宝网站建设的公司
  • 三亚婚纱摄影 织梦网站源码我的世界自己做披风网站
  • 专业做影楼招聘网站有哪些电子商务以后可以做什么工作
  • 个人建设网站流程做网站推广的需要了解哪些知识
  • 富阳网站建设推广上海外贸网站开发
  • 网站批量修改wordpress升级教程
  • 网站建设毕业设计总体规划wordpress 转发
  • 如何做2级网站中劵资本集团股票交易网站建设中
  • 商城网站 备案广西建设网官方网桂建云
  • wordpress 文章锚点株洲seo优化
  • 西安网站制作公司排营销型网站建设优化
  • 企业做网站需要注意什么建设网站贵吗
  • 怎么做有个捐款的网站网站设计软件有哪些
  • 购买网站模板怎么用备案官方网站
  • 大学生旅游网站策划书定制麻将app软件多少钱
  • 建设厅网站更改登陆密码郑州网站制作方案报价
  • 网站建设认知与理解华为网站建设策划书
  • 网站建设合同 印花税深圳罗湖网站制作公司哪家好