学习笔记
职责链模式的结构 和装饰模式的结构是一样的。
请求类型
public class Request {
private String name;
private String requestType;
private int number;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRequestType() {
return requestType;
}
public void setRequestType(String requestType) {
this.requestType = requestType;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
管理的抽象类
public abstract class Manager {
protected String name;
//管理者的上级
protected Manager superior;
public Manager(String name) {
this.name=name;
}
//设置管理者的上级
public void SetSuperior(Manager superior){
this.superior=superior;
}
//声请请求
abstract public void requestApplications(Request requset);
public static void main(String[]args){
CommonManager commonManager =new CommonManager("hyy");
GeneralManager generalManager =new GeneralManager("ysen");
Majordomo majordomo =new Majordomo("hdx");
//设置上下级
commonManager.SetSuperior(majordomo);
majordomo.SetSuperior(generalManager);
Request request = new Request();
request.setName("ysen");
request.setRequestType("加薪");
request.setNumber(800);
commonManager.requestApplications(request);
}
}
管理的具体类
//总经理
public class GeneralManager extends Manager {
public GeneralManager(String name) {
super(name);
}
@Override
public void requestApplications(Request request) {
if(request.getRequestType().equals("请假")&&request.getNumber()<=7){
System.out.println(request.getName()+request.getRequestType()+request.getNumber()+"被批准" );
}else if(request.getRequestType().equals("加薪")&&request.getNumber()<=800){
System.out.println(request.getName()+request.getRequestType()+request.getNumber()+"被批准" );
}
else{
if(this.superior!=null){
this.superior.requestApplications(request);
}
}
}
}
//总监
public class Majordomo extends Manager {
public Majordomo(String name) {
super(name);
}
@Override
public void requestApplications(Request request) {
if(request.getRequestType().equals("请假")&& request.getNumber() <=5){
System.out.println(request.getName()+request.getRequestType()+request.getNumber()+"被批准" );
}else{
if(this.superior!=null){
this.superior.requestApplications(request);
}
}
}
}
//经理
public class CommonManager extends Manager {
public CommonManager(String name) {
super(name);
}
@Override
public void requestApplications(Request request) {
if(request.getRequestType().equals("请假")&& request.getNumber()<=2){
System.out.println(request.getName()+request.getRequestType()+request.getNumber()+"被批准" );
}else{
if(this.superior!=null){
this.superior.requestApplications(request);
}
}
}
}
分享到:
相关推荐
在软件设计领域,职责链(Chain of Responsibility)模式是一种行为设计模式,它允许将请求沿着处理者对象的链式结构进行传递,直到被某个对象处理。这种模式在C++中广泛应用,可以有效地解耦发送者和接收者,使得...
### 201626705063梁艳萍职责链模式.pptx 知识点解析 #### 一、职责链模式简介 职责链模式是一种行为设计模式,其核心思想在于通过构建一系列处理对象并将这些对象串联成一条链路,使得一个请求可以在该链路上依次...
### (行为型模式) Chain Of Responsibility 职责链模式 #### 李建忠 jianzhong.lee@gmail.com #### 设计模式论坛: forum.softcompass.com #### 上海祝成科技高级培训讲师 www.softcompass.com #### 请求的发送者...
职责链模式是一种行为设计模式,它允许我们定义一系列对象,这些对象可以按顺序处理请求,形成一条责任链。每个对象都是链上的一个节点,负责处理特定类型的请求。如果某个节点不能处理请求,它会将请求传递给链上的...
【职责链模式】是一种行为设计模式,用于在对象之间分散处理请求的责任,使得接收者和发送者无需知道具体的处理过程。在这个模式中,通常有一个处理请求的对象链,每个对象都有能力处理请求,或者将请求传递给链中的...
在提供的PPT内容中,以一个简单的公司请假审批流程为例,展示了职责链模式的应用。在这个例子中,有三个级别的管理者:经理(Manager)、总监(Director)和总经理(General Manager),每个级别的管理者有权批准...
实例讲解C#中的职责链模式 职责链模式是一种常见的设计模式,它允许将处理请求的责任传递给多个对象,以便处理该请求。今天,我们将使用C#语言来实现一个职责链模式的示例,以便更好地理解和学习。 职责链模式的...
Java 使用责任链模式处理学生请假问题详解 责任链模式是 Java 中一种常用的设计模式,它可以将请求的处理过程分配给多个对象,以便更好地处理复杂的请求。下面是关于 Java 使用责任链模式处理学生请假问题的详细...
职责链模式(Chain of Responsibility)是一种行为设计模式,它的核心思想是将一系列处理请求的对象组织成一条链,并在链上的每个对象(称为处理者)中定义处理请求的逻辑。当一个请求进入系统时,它会从链头开始,...
本文实例讲述了php设计模式之职责链模式定义与用法。分享给大家供大家参考,具体... * 模拟公司请假流程,实现职责链模式 * 项目主管:有1天的批假权限 * 项目经理:有3天的批假权限 * 公司老板:任性似的权限看心情
### C++设计模式之职责链模式详解 #### 一、职责链模式简介 **职责链模式**(Chain of Responsibility Pattern)是一种行为设计模式,它使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系...
职责链模式是一种行为设计模式,它的主要目的是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。在这个模式中,请求在一系列的对象之间传递,直到某个对象能够处理它为止。这种模式使得请求...
这个例子展示了如何使用责任链模式来处理请假申请,请求在多个处理者之间传递,直到找到合适的处理者。这样的设计使得系统更加灵活,易于扩展新的审批级别。同时,由于处理者之间的关系是松散耦合的,每个处理者只需...
这个过程可以通过责任链模式来实现,使得每个级别的审批者都是链上的一个节点,根据请假天数的大小,请求会在链上不同节点之间传递,直到找到合适的处理者。 具体实现中,我们有以下几个关键类: 1. `LeaveRequest...
一、责任链模式 现有 “战士”、“班长”、“排长”、“连长”,“营长”五种角色,当有人要请假时要进行以下处理 1.只能是下级象上级请假(如“排长”只能向“连长请假”) 2.班长可以批准1天内的假期,排长批5天,...
前言 最近心情很差,因为生活,因为工作;所以想请几天假去丽江玩玩。就向项目经理提交了休假申请,我的项目经理向项目主管提交了我的休假申请...而这样的一种行为,就好比我今天需要总结的职责链模式一样。 什么是职责
责任链模式是一种行为设计模式,它允许我们定义一系列对象,这些对象可以按顺序处理请求,每个对象都可以处理请求的一部分或全部,并将未处理的请求传递给链中的下一个对象。这种模式使得请求的发送者无需知道哪个...
请假条.doc 请假条是一种常见的办公文档,用于员工向单位请假的...请假条.doc 的知识点包括请假类型、请假事由、请假时辰、签字和批准、请假管理、请假和劳动法、请假系统、请假和人力资源管理、请假和企业文化等。