设计模式(五)责任链模式
一.什么是责任链模式?
责任链就是从一个起点发起请求,然后沿着任务链依次传递给每一个节点上的对象,直到有一个节点处理这个请求为止。
二.责任链模式实例实现?
1 public abstract class ConsumeHandler { 2 private ConsumeHandler nextHandler; 3 4 public ConsumeHandler getNextHandler(){ 5 return nextHandler; 6 } 7 8 public void setNextHandler(ConsumeHandler nextHandler){ 9 this.nextHandler=nextHandler; 10 } 11 12 /** 13 * user申请人 free报销费用 14 */ 15 public abstract void doHandler(String user,double free); 16 } 17 18 //项目经理 19 public class ProjectHandler extends ConsumeHandler { 20 @Override 21 public void doHandler(String user, double free) { 22 if (free < 500){ 23 if (user.equals("lwx")){ 24 System.out.print("给予报销:"+free); 25 }else{ 26 System.out.print("报销不通过"); 27 } 28 }else{ 29 if (getNextHandler()!=null){ 30 getNextHandler().doHandler(user,free); 31 } 32 } 33 } 34 } 35 36 //部门经理 37 public class DeptHandler extends ConsumeHandler { 38 @Override 39 public void doHandler(String user, double free) { 40 if (free<1000){ 41 if (user.equals("zy")){ 42 System.out.print("给予报销:"+free); 43 }else{ 44 System.out.println("报销不通过"); 45 } 46 }else{ 47 if (getNextHandler()!=null){ 48 getNextHandler().doHandler(user,free); 49 } 50 } 51 } 52 } 53 54 //总经理 55 public class GeneralHandler extends ConsumeHandler { 56 @Override 57 public void doHandler(String user, double free) { 58 if (free>=1000){ 59 if (user.equals("lwxzy")) { 60 System.out.println("给予报销:" + free); 61 } else { 62 System.out.println("报销不通过"); 63 } 64 }else{ 65 if (getNextHandler()!=null){ 66 getNextHandler().doHandler(user,free); 67 } 68 } 69 } 70 } 71 72 public class ChainOfResponsibilityActivity extends AppCompatActivity { 73 74 @Override 75 protected void onCreate(Bundle savedInstanceState) { 76 super.onCreate(savedInstanceState); 77 setContentView(R.layout.activity_chain_of_responsibility); 78 79 ProjectHandler projectHandler=new ProjectHandler(); 80 DeptHandler deptHandler=new DeptHandler(); 81 GeneralHandler generalHandler=new GeneralHandler(); 82 83 projectHandler.setNextHandler(deptHandler); 84 deptHandler.setNextHandler(generalHandler); 85 86 projectHandler.doHandler("lwx",450); 87 projectHandler.doHandler("lwx", 600); 88 projectHandler.doHandler("zy", 600); 89 projectHandler.doHandler("zy", 1500); 90 projectHandler.doHandler("lwxzy", 1500); 91 } 92 }
设计模式(五)责任链模式相关推荐
- 走穿java23种设计模式-15责任链模式详解
走穿java23种设计模式-15责任链模式详解 责任链模式是一种常见的行为模式. 一.责任链模式的现实场景 习伟过生日邀请了很多朋友到KTV一起庆祝,为了增加欢乐的气氛,习伟建议大家一起玩击鼓传花的游 ...
- 乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)
原文:乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 责任链模式(Chain of ...
- php设计模式之责任链模式
php设计模式之责任链模式 实际问题 你的论坛有举报功能,版主能解决粗口方面的举报,警察能解决严重一点的黄赌毒方面的举报,更严重的反政府的举报就需要由国安局来完成. 职场中每个人都有直属的上级,如果到 ...
- 轻松学习Java设计模式之责任链模式
我们的态度是:每天进步一点点,理想终会被实现. 前言 设计模式,可能很多人都是看到代码知道怎么回事,但是离开代码再让其说出来,估计就有点含糊其词了,包括我自己在内.Android中其实用到的设计模式也 ...
- 手撸设计模式之-责任链模式
手撸设计模式之-责任链模式 一 .责任链模式介绍 1.1 定义 1.2 责任链模式UML结构图 1.3 责任链模式结构详细 1.3 用例代码实现 二.责任链模式应用场景: 2.1 场景概述 2.2 场 ...
- 软件设计模式之责任链模式实验
软件设计模式之责任链模式实验 一.实验目的 掌握软件责任链模式中的命令模式,能够用责任链模式编写程序,解决实际问题. 二.实验内容与要求 内容:某小学老师指定班里的三位学生收寒假作业,三位学生分别负责 ...
- Java设计模式之责任链模式(二)
所有设计模式传送门 本文将一起介绍学习下设计模式之责任链模式.责任链模式是指使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有 ...
- Java设计模式作业-责任链模式
Java设计模式作业-责任链模式:Web过滤器 文章目录 前言 一.类图 二.代码及测试结果 1.Trouble类 2.Support类 3.CharSupport类 4.TypeTransformS ...
- Java设计模式系列--责任链模式(应用)
原文网址:Java设计模式系列--责任链模式(应用)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Java设计模式中的责任链模式的一些使用场景. 责任链模式的好处 符合单一职责原则 每个功能 ...
- JAVA设计模式之责任链模式(职责链模式)
转自JAVA设计模式之责任链模式(职责链模式) 责任链/职责链(Chain of Responsibility)模式的定义 为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理 ...
最新文章
- mysql mha官网下载_mysql MHA 及多主复制
- 一文解读苹果 M1 芯片电脑上的开源软件
- 6个例子让你彻底明白,什么是纳什均衡
- 组播基本概念、IGMP、IGMP监听学习笔记
- 基本权限管理框架,开通淘宝支付
- $http中文乱码|param乱码|angular提交后台乱码|
- 400集python入门到精通_2020年最强Python学习路线+教程,400集带你从入门到精通
- 网页服务器攻击,WEB服务器攻击分析全过程_91Ri.org
- mmap java_Java文件映射[Mmap]揭秘 | 学步园
- Window winload.efi 文件丢失解决方法
- 进程通信方式总结与盘点
- android手表密码忘了咋办,moto 360手表通过Android 5.0系统自动解锁手机教程
- 煤炭及煤化工加工会产生什么危废_煤化工固体废物的清洁处置
- 【光线追踪系列十四】蒙特卡洛积分与重要性采样
- 牵手华为云,云时通SRM助力企业采购数字化升级!
- <转>svn提示出错异常为remains in conflict
- c3p0-config.xml配置文件的那些事
- JVM_01_类加载子系统
- 云收藏系统|基于Springboot实现云收藏系统
- Java基础_107. private 关键字的使用