责任链模式之开发新游戏的审批过程
要开发新的游戏了,必须要经过各个级别的老大进行对项目的风险性研究等,这里写了个责任链,好像很牵强
主要涉及三个角色:项目制作人,项目经理,老板
// // // 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
责任链模式之开发新游戏的审批过程相关推荐
- java里面的环链怎么做_Java模式开发之责任链模式
从前往后按照一定操作顺序进行 申明一个过滤器接口,里面有一个"方法申明" 叫 规则过滤,返回处理后的结果 申明一些具体的操作类,全部实现过滤器接口,重写里头规则过滤的方法,返回规 ...
- 十八:责任链模式:优雅的任务分派
a. 责任链模式剖析 责任链模式是一种行为设计模式,它能够将请求的发送者与接收者解耦.在这个模式中,多个处理对象组成一个链条,每个处理对象在链条中都有机会处理请求.当一个请求沿着链条传递时,处理对象可 ...
- 关于责任链模式的优雅实现
关于责任链模式的优雅实现 目录 什么是责任链模式 责任链模式在开发中的应用 Java实现示例 什么是责任链模式 责任链模式(Chain of Responsibility Pattern)是一种常用的 ...
- 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器
理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...
- 一起学设计模式 - 责任链模式
责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...
- 折腾Java设计模式之责任链模式
责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...
- 【设计模式系列】行为型之责任链模式
目录 背景 理论 实践 总结 背景 责任链模式,小编在自己项目迭代过程也参与了维护和设计实现:本篇博文主要针对该设计模型进行总结和实践: 简单举例日常生活或者工作中能够接触的责任链模式场景:采购审批流 ...
- Netty框架之责任链模式及其应用
Netty框架之概述及基本组件介绍 Reactor网络编程模型解析 前言 在上篇博客介绍完netty框架的基本组件介绍和概述,也跟着代码看了下NioEventLoopGroup的启动过程,以及基于Re ...
- 从 Forces 开始分析责任链模式:「写一个 Discord 对话机器人」
目录 前言 你收到了一份需求 面向对象分析 (OOA) 初版程式实作 察觉 Forces 套用责任链模式 (OOD) 封装变动之处 (Encapsulate what varies) 萃取共同行为 ( ...
最新文章
- 开启POP3/SMTP服务
- SAP UI5 responsiveLayout和responsiveGridLayout的区别
- 第 8 章:管理模式对象
- 让Dapper支持读写分离
- 未发现oracle(tm)客户端和网络组件_SpringColud Eureka的服务注册与发现
- 深度学习笔记(10) 优化算法(二)
- 解决ping时出现?的问题
- HTML+CSS个人简历练习
- 微信公众平台开发者模式和编辑模式有什么用
- android中TextView属性之autoText解析
- applet java_在浏览器中运行java applet
- html5毕业设计程序,网页毕业设计制作流程
- 图文详解超五类网线的接法
- CC2430基础——LED控制实验
- linux grep -rn如何只过滤第二层的某个文件夹
- Simulated maze模拟迷宫(C++实现)
- SQL数据库-第一次试验-表与视图的基本操作
- 怎么取消微信送票服务器,微信抢火车票怎么取消?有什么要注意的吗?
- STC15单片机实战项目 - 项目需求
- Paper reading (六十五):Kernel-penalized regression for analysis of microbiome data