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

延安网站建设报价启动门户网站建设

延安网站建设报价,启动门户网站建设,daocloud wordpress,吕梁推广型网站建设目录 1、使用demo演示责任链模式2、传统方案解决oa系统审批3、传统方案解决oa系统审批存在的问题4、职责链模式基本介绍5、职责链模式原理类图6、职责链模式解决oa系统采购审批7、职责链模式的注意事项和细节8、职责链模式的实际使用场景举例 1、使用demo演示责任链模式 学校o…

目录

      • 1、使用demo演示责任链模式
      • 2、传统方案解决oa系统审批
      • 3、传统方案解决oa系统审批存在的问题
      • 4、职责链模式基本介绍
      • 5、职责链模式原理类图
      • 6、职责链模式解决oa系统采购审批
      • 7、职责链模式的注意事项和细节
      • 8、职责链模式的实际使用场景举例

1、使用demo演示责任链模式

学校oa系统的采购审批项目:需求是
在这里插入图片描述


2、传统方案解决oa系统审批

在这里插入图片描述
在一个类中对教学器材的价格进行判断,然后根据判断调用不同的审批者进行审批


3、传统方案解决oa系统审批存在的问题

  • 客户端这里会使用分支判断来对不用的采购请求进行处理,这样就存在如下问题
    • 如果各个级别的人员审批金额发生变化,客户端也需要相应变化
    • 客户端必须明确知道有多少个审批级别
  • 采购请求和审批人员之间存在强耦合关系,不利于代码的扩展和维护

4、职责链模式基本介绍

职责链模式又称为责任链模式:每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依次类推


5、职责链模式原理类图

在这里插入图片描述

对职责链模式的说明:

  • Handler:抽象的处理者,定义了一个处理请求的方法,并且聚合了自身
  • ConcreteHandlerA|B:是具体的处理者,处理它自己负责的请求,可以访问它的后继者,如果可以处理当前请求,则处理,否则将该请求交给下个后继者去处理,从而形成一个职责链

6、职责链模式解决oa系统采购审批

1)类图分析
在这里插入图片描述
2)代码实现

// 购买请求
public class PurchaseRequest {//private int type;private float price;private int id;public PurchaseRequest(int type, float price, int id) {this.type = type;this.price = price;this.id = id;}public int getType() {return type;}public float getPrice() {return price;}public int getId() {return id;}
}// 审批者抽象类
public abstract class Approver {Approver approver; // 下一个处理者String name;public Approver(String name) {this.name = name;}// 设置下一个处理者public void setApprover(Approver approver) {this.approver = approver;}// 处理 审批请求的方法,得到一个请求public abstract void processRequest(PurchaseRequest purchaseRequest);
}/***  部门主任*/
public class DepartmentApprover extends Approver {public DepartmentApprover(String name) {super(name);}@Overridepublic void processRequest(PurchaseRequest purchaseRequest) {if (purchaseRequest.getPrice() <= 5000) {System.out.println("请求编号 id = " + purchaseRequest.getId() + "被" + this.name + "处理");} else {// 如果不能处理,则让下一个处理者进行处理approver.processRequest(purchaseRequest);}}
}/*** 系主任*/
public class CollegeApprover extends Approver {public CollegeApprover(String name) {super(name);}@Overridepublic void processRequest(PurchaseRequest purchaseRequest) {if (purchaseRequest.getPrice() > 5000 && purchaseRequest.getPrice() <= 10000) {System.out.println("请求编号 id = " + purchaseRequest.getId() + "被" + this.name + "处理");} else {// 如果不能处理,则让下一个处理者进行处理approver.processRequest(purchaseRequest);}}
}/*** 副校长*/
public class ViceSchoolMasterApprover extends Approver {public ViceSchoolMasterApprover(String name) {super(name);}@Overridepublic void processRequest(PurchaseRequest purchaseRequest) {if (purchaseRequest.getPrice() > 10000 && purchaseRequest.getPrice() <= 30000) {System.out.println("请求编号 id = " + purchaseRequest.getId() + "被" + this.name + "处理");} else {// 如果不能处理,则让下一个处理者进行处理approver.processRequest(purchaseRequest);}}
}
/*** 校长*/
public class SchoolMasterApprover extends Approver {public SchoolMasterApprover(String name) {super(name);}@Overridepublic void processRequest(PurchaseRequest purchaseRequest) {if (purchaseRequest.getPrice() > 30000) {System.out.println("请求编号 id = " + purchaseRequest.getId() + "被" + this.name + "处理");} else {// 如果不能处理,则让下一个处理者进行处理approver.processRequest(purchaseRequest);}}
}public class Client {public static void main(String[] args) {PurchaseRequest purchaseRequest = new PurchaseRequest(1, 31000, 1);	DepartmentApprover departmentApprover = new DepartmentApprover("张主任");CollegeApprover collegeApprover = new CollegeApprover("李院长");ViceSchoolMasterApprover viceSchoolMasterApprover = new ViceSchoolMasterApprover("王副校");SchoolMasterApprover schoolMasterApprover = new SchoolMasterApprover("佟校长");//需要将各个审批级别的下一个设置好 (处理人构成环形: )departmentApprover.setApprover(collegeApprover);collegeApprover.setApprover(viceSchoolMasterApprover);viceSchoolMasterApprover.setApprover(schoolMasterApprover);schoolMasterApprover.setApprover(departmentApprover);departmentApprover.processRequest(purchaseRequest);}
}

在这里插入图片描述


7、职责链模式的注意事项和细节

  • 将请求和处理分开,实现解耦,提高系统的灵活性
  • 性能收到影响,特别是在链比较长的时候。因此需要控制链中最大节点数量,一般通过在Handler中设置一个
    最大节点数量,在setNext方法中判断是否已经超过阈值,超过则不允许建立改节点
  • 由于采取了链的方式,所以调试逻辑比较复杂

8、职责链模式的实际使用场景举例

http://www.yayakq.cn/news/33437/

相关文章:

  • 手机网站后台怎么进天津港电子商务信息网
  • 医院网站建设原理北京国企设计院排名
  • 襄阳行业网站建设网站建设加推广话术
  • php网站开发流程步骤网页版游戏排行榜枪
  • 和各大网站做视频的工作自己做的网站网页打开速度慢
  • 怎么样做网站推广杭州比较好的景观设计公司
  • 中国电信 网站备案淘宝 客要推广网站怎么做
  • 黄江镇网站建设公司软件培训内容怎么写
  • 龙华城市建设局网站一级造价工程师考试科目
  • 建设网站公司网站能自己做的ppt网站
  • 建立什么网站赚钱程序员培训班课程
  • 网站建设好后能修改吗网站开发实例模板
  • 网站职业技能培训班公司邮箱怎么进入
  • 类似凡科互动的网站晋城网站建设电话
  • 网站分站代理加盟做外包的网站有哪些问题
  • 做旅游网站图片哪里找对网站开发的理解
  • 衡水做网站建设公司基于jquery做的网站
  • 广州设计网站公司软件开发项目名称
  • 南皮做网站价格网站科技感颜色
  • 小米路由2 做网站工程造价信息网官网登录
  • 多就能自己做网站注册中文域名
  • 中国建设银行江西分行网站首页温州网络投诉平台
  • 网站说服力营销型网站策划 pdf微信网站什么做的
  • 上海网站建设联系电平面设计类的网站
  • app产品网站模板免费下载网站跳转如何做
  • 怎么做一网站营销网站建设818gx
  • 企业首次建设网站的策划方案创建站点的步骤
  • 手机旅游视频网站模板网站建设学什么语言
  • 哈尔滨哪里有做网站的物流公司做网站
  • 较成功营销网站的例子wordpress商店页面