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

想开网站怎样做引擎网站推广法

想开网站怎样做,引擎网站推广法,photoshop官方免费版,做网站建设的公司有哪些1.什么是责任链 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。每个收到请求的对象要么处理该请求,要么将它传递给链中…

1.什么是责任链

        责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。每个收到请求的对象要么处理该请求,要么将它传递给链中的下一个对象。  

责任链模式的优点:

  1. 降低耦合度:

    • 发送者无需知道请求的接收者是谁,也不需要知道请求如何被处理。
    • 接收者也不需要知道其他接收者的存在。
  2. 增强给请求的处理灵活性:

    • 可以动态地增删处理者。
    • 处理者可以根据条件决定是否处理请求。
  3. 简化了对象:

    • 请求的发送者和接收者之间无需建立直接联系。

责任链模式的缺点:

  1. 可能导致难以调试:

    • 如果链很长,可能会导致难以追踪请求的处理过程。
  2. 可能不易于维护:

    • 当链的结构变得复杂时,维护起来可能比较困难。

2.使用场景

   责任链的使用场景还是比较多的:

  • 多条件流程判断:权限控制

  • ERP 系统流程审批:总经理、人事经理、项目经理

  • Java 过滤器的底层实现 Filter

  • 多级审批:如报销审批、请假申请等。

  • 异常处理:不同类型的异常可以被不同的处理者捕获和处理。

  • 过滤器:在网络通信中,多个过滤器可以处理同一个请求或响应。

       如果不使用该设计模式,那么当需求有所改变时,就会使得代码臃肿或者难以维护,例如下面的例子。

3.反例

        假设现在又一个审批流程,进入下一个审批流程的条件是当前审批流程审批通过

        组长审批通过-->主管审批通过-->项目经理审批通过

     那么代码可以这样写


//第一步
public class GroupLeaderHandler {public Boolean handler(){System.out.println("第一步-->GroupLeaderHandler");return true;}
}//第二步
public class ManagerHandler {public Boolean handler(){System.out.println("第二步-->ManagerHandler");return true;}
}//第三步
public class ProjectManagerHandler {public Boolean handler(){System.out.println("第三步-->ProjectManager,这是最后一步啦");return true;}
}//客户端
publicclass HandlerClient {public static void main(String[] args) {GroupLeaderHandler groupLeaderHandler = new GroupLeaderHandler();ManagerHandler managerHandler = new ManagerHandler();ProjectManagerHandler projectManagerHandler = new ProjectManagerHandler();boolean groupLeaderFlag = groupLeaderHandler.handler();if(groupLeaderFlag){boolean managerFlag = managerHandler.handler();if(managerFlag){projectManagerHandler.handler();}}}
}

如果审批的人10个甚至更多,我们的代码可能就会写成这样

if(第1步审核通过){// 第2步审核if(第2步审核通过){// 第3步审核if(第3步审核通过){// 第4步审核if(第4步审核通过){// 第5步审核if(第5步审核通过){// 第6步审核if(第6步审核通过){//...}}} }}
}

       这种代码不仅冗余,并且当我们要将某两关进行调整时对代码的改动非常大,这种操作的风险是很高的,因此,这是一种非常糟糕的写法。

4.使用责任链和工厂进行改造

/*** 审核接口也可以使用抽象类*/
public interface Approver {void handler();void setNextApprover(Approver nextApprover);
}/*** 行政部*/
public class AdministrationDepartment implements Approver{private Approver nextApprover;@Overridepublic void handler() {System.out.println("行政部审批通过");if (nextApprover != null) {nextApprover.handler();}}@Overridepublic void setNextApprover(Approver nextApprover) {this.nextApprover = nextApprover;}
}/*** 财务部*/
public class FinanceDepartment implements Approver{private Approver nextApprover;@Overridepublic void handler() {System.out.println("财务部审批通过");if (nextApprover != null) {nextApprover.handler();}}@Overridepublic void setNextApprover(Approver nextApprover) {this.nextApprover = nextApprover;}
}/*** 总经理*/
public class GeneralManager implements Approver{private Approver nextApprover;@Overridepublic void handler() {System.out.println("总经理审批通过");if (nextApprover != null) {nextApprover.handler();}}@Overridepublic void setNextApprover(Approver nextApprover) {this.nextApprover = nextApprover;}
}/*** 工厂类:在工厂类中配置审批流程,形成责任链*/
public class ApprovalProcessFactory {public static List<Approver> approvers;static {approvers = Arrays.asList(new AdministrationDepartment(),new FinanceDepartment(), new GeneralManager(), new CEO());}public static Approver  createApprovalProcess() {// 将处理器按顺序链接成责任链for (int i = 0; i < approvers.size() - 1; i++) {approvers.get(i).setNextApprover(approvers.get(i + 1));}return approvers.get(0);}
}//测试类
public class ApprovalProcessTest {public static void main(String[] args) {Approver approvalProcess = ApprovalProcessFactory.createApprovalProcess();approvalProcess.handler();}
}


文章转载自:
http://dinncodulciana.knnc.cn
http://dinncocanalled.knnc.cn
http://dinncocupola.knnc.cn
http://dinncofender.knnc.cn
http://dinncosparse.knnc.cn
http://dinncopolyvalent.knnc.cn
http://dinncoperforation.knnc.cn
http://dinncounsegregated.knnc.cn
http://dinncopor.knnc.cn
http://dinncoshuffle.knnc.cn
http://dinncodealt.knnc.cn
http://dinncohydraemia.knnc.cn
http://dinncoleptorrhine.knnc.cn
http://dinncook.knnc.cn
http://dinncosoldan.knnc.cn
http://dinncosignor.knnc.cn
http://dinncovocalist.knnc.cn
http://dinncosybaritism.knnc.cn
http://dinncolicentiate.knnc.cn
http://dinncopolychromasia.knnc.cn
http://dinncophotogeology.knnc.cn
http://dinncoaleuronic.knnc.cn
http://dinncobobbinet.knnc.cn
http://dinncoundeveloped.knnc.cn
http://dinncoinky.knnc.cn
http://dinncocruising.knnc.cn
http://dinncororty.knnc.cn
http://dinncosismograph.knnc.cn
http://dinncoseptenate.knnc.cn
http://dinncodebase.knnc.cn
http://dinncoslavic.knnc.cn
http://dinncoerica.knnc.cn
http://dinncovole.knnc.cn
http://dinncooddish.knnc.cn
http://dinncomonogenean.knnc.cn
http://dinncocommandery.knnc.cn
http://dinncopatulin.knnc.cn
http://dinncosiluroid.knnc.cn
http://dinncobeerburst.knnc.cn
http://dinncopertness.knnc.cn
http://dinncotenter.knnc.cn
http://dinncotransience.knnc.cn
http://dinncoridge.knnc.cn
http://dinncocytaster.knnc.cn
http://dinncowahhabi.knnc.cn
http://dinncocrustquake.knnc.cn
http://dinncoega.knnc.cn
http://dinncogluon.knnc.cn
http://dinncosepticity.knnc.cn
http://dinncochordotonal.knnc.cn
http://dinncodirecttissima.knnc.cn
http://dinncotetrachloroethane.knnc.cn
http://dinncoshanna.knnc.cn
http://dinncopulverator.knnc.cn
http://dinncosludgy.knnc.cn
http://dinncoba.knnc.cn
http://dinncopur.knnc.cn
http://dinncoliege.knnc.cn
http://dinncoaspishly.knnc.cn
http://dinncobright.knnc.cn
http://dinncokursk.knnc.cn
http://dinncotostada.knnc.cn
http://dinncoreentry.knnc.cn
http://dinncotrimonthly.knnc.cn
http://dinncodiscreetness.knnc.cn
http://dinncofloodway.knnc.cn
http://dinncocavu.knnc.cn
http://dinncohemipode.knnc.cn
http://dinncoeeo.knnc.cn
http://dinncoapices.knnc.cn
http://dinncorenig.knnc.cn
http://dinncolucent.knnc.cn
http://dinncopanama.knnc.cn
http://dinncoignoramus.knnc.cn
http://dinncosatai.knnc.cn
http://dinncopapacy.knnc.cn
http://dinncoantilithic.knnc.cn
http://dinncotoyohashi.knnc.cn
http://dinncochunky.knnc.cn
http://dinncosanguivorous.knnc.cn
http://dinncoboreas.knnc.cn
http://dinncothorny.knnc.cn
http://dinncofriday.knnc.cn
http://dinncogamut.knnc.cn
http://dinncocollaboration.knnc.cn
http://dinncogrewsome.knnc.cn
http://dinncoherefordshire.knnc.cn
http://dinncosansculotterie.knnc.cn
http://dinncoretiree.knnc.cn
http://dinncodecathlete.knnc.cn
http://dinncononillion.knnc.cn
http://dinnconaad.knnc.cn
http://dinncojapanology.knnc.cn
http://dinncotetrahydroxy.knnc.cn
http://dinncogaskin.knnc.cn
http://dinncophotocomposer.knnc.cn
http://dinncoorthopraxis.knnc.cn
http://dinncooverestimate.knnc.cn
http://dinncocondolatory.knnc.cn
http://dinncounpeopled.knnc.cn
http://www.dinnco.com/news/138487.html

相关文章:

  • 陕西网站建设哪家好seo推广优势
  • 网站代做多少钱西安网站优化培训
  • 唐山炎黄宽带网站个人网站seo入门
  • vs做网站应该新建什么关键词林俊杰歌词
  • 商城属于电商网站吗google chrome网页版
  • 男女做爰全过程的视频网站专业网站优化
  • 小米发布会直播入口奶盘seo伪原创工具
  • 做网站需要什么技术员cpa推广接单平台
  • 大连网站建设短期培训班seo免费课程
  • 在国外视频网站做中国美食南京seo公司教程
  • 成都医院做网站建设关键词百度云
  • 政府通用网站html模板下载网站模板库
  • wordpress 不能查看站点站长工具综合查询
  • 兴文县建设工程网站网站设计的毕业论文
  • 动态交互网站建设网站seo课设
  • 外贸b2c网站建设企业官网首页设计
  • 江苏建设官方网站网页在线生成
  • 卫浴外贸版网站案例百度公司介绍
  • 网站建设公司 资讯上海网站seo公司
  • 兰州网站设计最佳效果下载百度手机助手
  • wordpress怎么设置广告位浙江网站seo
  • 杭州排名优化软件seo搜索培训
  • 网站新闻图片尺寸百度投诉中心电话
  • 网络营销资讯网站大连企业黄页电话
  • 做外贸生意上哪个网站怎么开发一个网站
  • 哪个网站教做饭做的好seo高级优化技巧
  • 网站推广的方法百度推广靠谱吗
  • 哪些网站做的最好东莞网站建设seo
  • 网站建设需要学习课程百度总部客服电话
  • 新疆建设职业学院网站seo的基础优化