码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-08-07 18:52:01      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   java   os   2014   ar   

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

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

bubuko.com,布布扣

//
//
//  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的类图。

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

bubuko.com,布布扣

责任链模式之开发新游戏的审批过程,布布扣,bubuko.com

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

标签:style   blog   http   color   java   os   2014   ar   

原文地址:http://www.cnblogs.com/ptowin/p/3897675.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!