首页 > 代码库 > 责任链模式之开发新游戏的审批过程
责任链模式之开发新游戏的审批过程
要开发新的游戏了,必须要经过各个级别的老大进行对项目的风险性研究等,这里写了个责任链,好像很牵强
主要涉及三个角色:项目制作人,项目经理,老板
////// 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 { @Override public void HandleRequest(String projectName, String applyName) { // TODO Auto-generated method stub super.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{ @Override public void HandleRequest(String projectName, String applyName) { // TODO Auto-generated method stub super.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 { @Override public void HandleRequest(String projectName, String applyName) { // TODO Auto-generated method stub super.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 { @Override public void HandleRequest(String projectName, String applyName) { // TODO Auto-generated method stub super.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的类图。
应用场合:客户端不需要知道谁来处理这个请求,有系统内部自己去通过链状进行对责任的分派,知道结束
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。