要开发新的游戏了,必须要经过各个级别的老大进行对项目的风险性研究等,这里写了个责任链,好像很牵强

主要涉及三个角色:项目制作人,项目经理,老板

//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : Handler.java
//  @ Date : 2014/8/7
//  @ Author :
//
//

public abstract class Handler {public Handler successor;public void HandleRequest(String projectName, String applyName) {}
}

//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : ConcreteHandler.java
//  @ Date : 2014/8/7
//  @ Author :
//
//
public class TeamLeaderHandler extends Handler {@Overridepublic void HandleRequest(String projectName, String applyName) {// TODO Auto-generated method stubsuper.HandleRequest(projectName, applyName);if(applyName.equals("神灵武士") && projectName.equals("dota传奇")){System.out.println("制作人同意了" + applyName +" : 对 " + projectName +"的申请");if(successor!=null){System.out.println("制作人在向上级申请");successor.HandleRequest(projectName, applyName);}else{System.out.println("制作人同意了案子了,开始做"); }}else{System.out.println("制作人否了案子,原因不详");}}
}

public class TeamManagerHandler extends Handler
{@Overridepublic void HandleRequest(String projectName, String applyName) {// TODO Auto-generated method stubsuper.HandleRequest(projectName, applyName);if(applyName.equals("神灵武士") && projectName.equals("dota传奇")){System.out.println("项目经理同意了" + applyName +" : 对 " + projectName +"的申请");if(successor!=null){System.out.println("项目经理在向上级申请");successor.HandleRequest(projectName, applyName);}else{System.out.println("项目经理同意了案子了,开始做");}}else{System.out.println("项目经理否了案子,原因不详");}}
}

public class BossHandler extends Handler {@Overridepublic void HandleRequest(String projectName, String applyName) {// TODO Auto-generated method stubsuper.HandleRequest(projectName, applyName);if(applyName.equals("神灵武士") && projectName.equals("dota传奇")){System.out.println("老板同意了" + applyName +" : 对 " + projectName +"的申请");if(successor!=null){System.out.println("项目经理在向上级申请");successor.HandleRequest(projectName, applyName);}else{System.out.println("老板同意了案子了,开始做");}}else{System.out.println("项目经理否了案子,原因不详");}}
}

public class BossHandler extends Handler {@Overridepublic void HandleRequest(String projectName, String applyName) {// TODO Auto-generated method stubsuper.HandleRequest(projectName, applyName);if(applyName.equals("神灵武士") && projectName.equals("dota传奇")){System.out.println("老板同意了" + applyName +" : 对 " + projectName +"的申请");if(successor!=null){System.out.println("项目经理在向上级申请");successor.HandleRequest(projectName, applyName);}else{System.out.println("老板同意了案子了,开始做");}}else{System.out.println("项目经理否了案子,原因不详");}}
}

//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : Client.java
//  @ Date : 2014/8/7
//  @ Author :
//
//
public class Client {public static void main(String[] args) {TeamLeaderHandler teamLeader = new TeamLeaderHandler();TeamManagerHandler manager = new TeamManagerHandler();BossHandler boss = new BossHandler();teamLeader.successor = manager;manager.successor = boss;teamLeader.HandleRequest("dota传奇", "神灵武士");}
}

制作人同意了神灵武士 : 对 dota传奇的申请
制作人在向上级申请
项目经理同意了神灵武士 : 对 dota传奇的申请
项目经理在向上级申请
老板同意了神灵武士 : 对 dota传奇的申请
老板同意了案子了,开始做

总结:其实责任链模式是非常简单的模式,在对象之间只需要保留下一个负责任的人的引用即可,下面就是GOF的类图。

应用场合:客户端不需要知道谁来处理这个请求,有系统内部自己去通过链状进行对责任的分派,知道结束

转载于:https://www.cnblogs.com/ptowin/p/3897675.html

责任链模式之开发新游戏的审批过程相关推荐

  1. java里面的环链怎么做_Java模式开发之责任链模式

    从前往后按照一定操作顺序进行  申明一个过滤器接口,里面有一个"方法申明" 叫 规则过滤,返回处理后的结果 申明一些具体的操作类,全部实现过滤器接口,重写里头规则过滤的方法,返回规 ...

  2. 十八:责任链模式:优雅的任务分派

    a. 责任链模式剖析 责任链模式是一种行为设计模式,它能够将请求的发送者与接收者解耦.在这个模式中,多个处理对象组成一个链条,每个处理对象在链条中都有机会处理请求.当一个请求沿着链条传递时,处理对象可 ...

  3. 关于责任链模式的优雅实现

    关于责任链模式的优雅实现 目录 什么是责任链模式 责任链模式在开发中的应用 Java实现示例 什么是责任链模式 责任链模式(Chain of Responsibility Pattern)是一种常用的 ...

  4. 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器

    理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...

  5. 一起学设计模式 - 责任链模式

    责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...

  6. 折腾Java设计模式之责任链模式

    责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...

  7. 【设计模式系列】行为型之责任链模式

    目录 背景 理论 实践 总结 背景 责任链模式,小编在自己项目迭代过程也参与了维护和设计实现:本篇博文主要针对该设计模型进行总结和实践: 简单举例日常生活或者工作中能够接触的责任链模式场景:采购审批流 ...

  8. Netty框架之责任链模式及其应用

    Netty框架之概述及基本组件介绍 Reactor网络编程模型解析 前言 在上篇博客介绍完netty框架的基本组件介绍和概述,也跟着代码看了下NioEventLoopGroup的启动过程,以及基于Re ...

  9. 从 Forces 开始分析责任链模式:「写一个 Discord 对话机器人」

    目录 前言 你收到了一份需求 面向对象分析 (OOA) 初版程式实作 察觉 Forces 套用责任链模式 (OOD) 封装变动之处 (Encapsulate what varies) 萃取共同行为 ( ...

最新文章

  1. 开启POP3/SMTP服务
  2. SAP UI5 responsiveLayout和responsiveGridLayout的区别
  3. 第 8 章:管理模式对象
  4. 让Dapper支持读写分离
  5. 未发现oracle(tm)客户端和网络组件_SpringColud Eureka的服务注册与发现
  6. 深度学习笔记(10) 优化算法(二)
  7. 解决ping时出现?的问题
  8. HTML+CSS个人简历练习
  9. 微信公众平台开发者模式和编辑模式有什么用
  10. android中TextView属性之autoText解析
  11. applet java_在浏览器中运行java applet
  12. html5毕业设计程序,网页毕业设计制作流程
  13. 图文详解超五类网线的接法
  14. CC2430基础——LED控制实验
  15. linux grep -rn如何只过滤第二层的某个文件夹
  16. Simulated maze模拟迷宫(C++实现)
  17. SQL数据库-第一次试验-表与视图的基本操作
  18. 怎么取消微信送票服务器,微信抢火车票怎么取消?有什么要注意的吗?
  19. STC15单片机实战项目 - 项目需求
  20. Paper reading (六十五):Kernel-penalized regression for analysis of microbiome data

热门文章

  1. 2017年Linux基础进阶系列课-老男孩-专题视频课程
  2. 《惢客创业日记》2019.06.25(周三)请问,你有打火机吗?(二)
  3. 三、FFmpeg安装
  4. tty文件命令 linux,什么是Linux上的TTY? (以及如何使用tty命令) | MOS86
  5. 回文数、罗马数字转数字、最大公共前缀
  6. Oracle在Linux怎么样装我有我的方法不信你瞧瞧
  7. hdu4859 海岸线
  8. 解决PresentationFontCache.exe占CPU过大的方法
  9. 软件测试:写测试用例(常考)
  10. df.fillna()