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

东莞seoseo优化排名优化推广网站怎么做最好

东莞seoseo优化排名,优化推广网站怎么做最好,科技公司网站响应式,个人网站可以做淘宝客嘛目录一、责任链模式二、责任链模式的优缺点1、优点2、缺点三、违背原则方案1、Programmer实体类2、数据校验3、但是,似乎违反了一些设计原则四、通过责任链模式重构代码1、链路抽象类定义2、校验项目名称3、校验名字4、校验活动细节5、测试类一、责任链模式 最近在…

在这里插入图片描述

目录

    • 一、责任链模式
    • 二、责任链模式的优缺点
      • 1、优点
      • 2、缺点
    • 三、违背原则方案
      • 1、Programmer实体类
      • 2、数据校验
      • 3、但是,似乎违反了一些设计原则
    • 四、通过责任链模式重构代码
      • 1、链路抽象类定义
      • 2、校验项目名称
      • 3、校验名字
      • 4、校验活动细节
      • 5、测试类

一、责任链模式

最近在做一个数据校验的功能,需要校验的东西很多,有的从数据库中查询,有的是固定的数值校验,有的是数据类型校验, 如果通过ifelse来写,也是没问题的。
但,为了代码的优雅和可扩展性,我选择尝试一下责任链模式,责任链模式的核心是解决一组服务中的先后执行处理关系

责任链模式(Chain of Responsibility Pattern)是将链中每一个节点看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首端发出时,会沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止。属于行为型模式。

二、责任链模式的优缺点

1、优点

  1. 减少大量ifelse;
  2. 逻辑清晰明了,添加删除节点、改变节点顺序方便快捷;
  3. 请求与处理解耦;
  4. 请求处理者只需关注自己感兴趣的请求,对于不感兴趣的请求,直接转发给下一级节点对象;
  5. 易于扩展新的请求处理类,符合开闭原则;

2、缺点

  1. 责任链太长或处理时间过长,会影响整体性能。
  2. 如果需要判断的东西较多,容易造成类保证;
  3. 如果每个判断逻辑较简单,可能会造成一个类只做一个小小的数值判断,哈哈;
  4. 如果节点对象存在循环链接,可能会造成死循环;

三、违背原则方案

对实体类程序员Programmer的数据进行校验,校验名字、项目、项目完成时间。

力求通过最简单的代码,通俗易懂的讲解责任链模式。

1、Programmer实体类

package com.guor.bean;import lombok.Data;import java.util.Date;@Data
public class Programmer {// 姓名private String name;// 项目private String project;// 模块private String module;// 进度private double schedule;// 计划完成时间private Date completePlanTime;// 详细信息private String info;
}

2、数据校验

package com.guor.chain;import com.guor.bean.Programmer;public class Check {public boolean programmerCheck(Programmer programmer){if(!"公众号".equals(programmer.getProject())){return false;}if(!"哪吒编程".equals(programmer.getName())){return false;}if(!programmer.getInfo().equals("公众号哪吒编程,定期分享Java干货,还有不定期的送书活动,包邮到你家,哈哈")){return false;}return true;}
}

一堆ifelse安排上,代码还是比较清晰易懂的,再有新的判断,就继续添加ifelse就完了。

3、但是,似乎违反了一些设计原则

  • 单一职责原则:指一个类或者模块应该有且只有一个改变的原因。
  • 开闭原则:软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的。
  • 接口隔离原则:尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。

四、通过责任链模式重构代码

1、链路抽象类定义

这部分是责任链模式的核心代码,重点在于通过next获取下一个节点。

定义一个抽象方法doHandler供子类去实现,实现不同的业务逻辑。

package com.guor.chain;import com.guor.bean.Programmer;public abstract class Handler<T> {protected Handler next;private void next(Handler next) {this.next = next;}public abstract boolean doHandler(Programmer programmer);public static class Builder<T> {private Handler<T> head;private Handler<T> tail;public Builder<T> addHandler(Handler handler) {if (this.head == null) {this.head = this.tail = handler;return this;}this.tail.next(handler);this.tail = handler;return this;}public Handler<T> build() {return this.head;}}
}

2、校验项目名称

package com.guor.chain;import com.guor.bean.Programmer;/*** 校验项目名称*/
public class ProjectHandler extends Handler {@Overridepublic boolean doHandler(Programmer programmer) {if(!"公众号".equals(programmer.getProject())){return false;}if(null == next){return true;}return next.doHandler(programmer);}
}

3、校验名字

package com.guor.chain;import com.guor.bean.Programmer;/*** 校验名字*/
public class NameHandler extends Handler {@Overridepublic boolean doHandler(Programmer programmer) {if(!"哪吒编程".equals(programmer.getName())){return false;}if(null == next){return true;}return next.doHandler(programmer);}
}

4、校验活动细节

package com.guor.chain;import com.guor.bean.Programmer;/*** 校验活动细节*/
public class InfoHandler extends Handler {@Overridepublic boolean doHandler(Programmer programmer) {if(!programmer.getInfo().contains("扫描文末二维码,关注公众号哪吒编程,定期分享Java干货,还有不定期的送书活动,包邮到你家")){return false;}if(null == next){return true;}return next.doHandler(programmer);}
}
  1. 先进行项目名称校验;
  2. 如果校验不通过,直接返回false;
  3. 如果校验通过,查看是否还有下一个校验节点;
  4. 如果没有,则直接返回;
  5. 如果有,则进行下一个节点的校验;以此类推!

5、测试类

在这里插入图片描述

责任链模式的设计,可以方便的进行扩展和维护,去掉了低俗的ifelse代码。

实际项目中的数据校验要复杂的多,还有一些审批流程、付款流程,都可以通过责任链模式进行改造,非常好用!

很多人觉得设计模式很简单,但是,能够熟练的将设计模式应用在自己的项目中,将各模块、功能规划的井井有条,运用的炉火纯青、恰到好处,真的很难。反复阅读,仔细体会。

文末送书:送5本《Spring Boot进阶原理、实战与面试题分析 》

送书方式:查看👇🏻👇🏻👇🏻,回复0825,获取活动方式👇🏻👇🏻👇🏻,或私信哪吒参与

http://www.lbrq.cn/news/2660887.html

相关文章:

  • 百度搜寻网站缩略图如何添加大连网站seo
  • 穷游 网站开发免费引流app下载
  • wordpress用mysql5.6肇庆seo排名
  • 淘宝客 网站备案萝卜建站
  • 网站建设费用预算明细app优化推广
  • 廊坊疫情最新情况沈阳seo排名优化推广
  • 快站怎么做淘客网站百度本地惠生活推广
  • 免费高清网站推荐品牌策划案
  • 做逆战网站的名字最常用的几个关键词
  • 网站语言是什么惠州seo收费
  • 怎么做网站流量赚钱吗百度指数官网入口
  • 建湖做网站哪家最好百度seo推广计划类型包含
  • 郑州网站托管助企免费大数据查询
  • 如何做网站广告搜索引擎优化自然排名
  • 游戏公司怎么注册青岛谷歌seo
  • 外贸建站用什么平台好百度一下首页登录入口
  • 佛山 做网站公司百度指数的搜索指数
  • 网站域名备案注销怎么做网站推广和宣传
  • 有一个网站怎么做cpc网站推广平台搭建
  • 网站流量所需的成本.滴滴友链
  • 网站地市频道建设百度官网
  • 网站建设工作基本流程全国免费发布信息平台
  • 建设牌官方网站广告公司推广
  • 山西住房建设部网站百度商家平台
  • 网站内做全文搜索百度视频下载
  • 做邪恶自拍小视频网站建设网官方网站
  • 江宁区住房和城乡建设厅网站佛山网站建设公司
  • 学些网站制作网站链接推广工具
  • 云南 网站建设电子商务营销策略有哪些
  • 公司邮箱登录seo外链推广工具下载
  • (三)全栈(部署)
  • 06-docker容器常用命令
  • 推荐系统学习笔记(十)多目标排序模型
  • Pytest项目_day08(setup、teardown前置后置操作)
  • BBH详解:面向大模型的高阶推理评估基准与数据集分析
  • PyQt简介