`
jsczxy2
  • 浏览: 1275402 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

学习设计模式之Chain of Responsibility模式(责任链模式)

阅读更多

引用下某大的文章:

设计模式 写道

面向对象开发人员通常希望明确和减少对象间的责任,从而降低对象之间的耦合程序。这样我们的系统更加容易 修改,同时也可降低产生缺陷的风险。从某种程度上说,java语言本身能够帮助降低对象间的耦合度。客户端只能访问对象的接口,而不用关系其具体实现细 节。借助于接口这种方式,客户端只需要了解方法的功能即可。如果我们按照某种层次结构进行组织,比如组织为类责任链,客户端代码就有可能不必事先了解自己 将使用哪一个类。在这种情况下,链中的每个对象都有个方法,当客户端代码调用该方法的时候,这些对象要么执行该方法,要么沿着这条链转发该方法调用请求。

 

Chain of Responsibility模式可让每个对象都有一次机会决定自己是否处理请求,以便于避免请求的发送者与其接收者之间的耦合。

 

 

例子:

 

      有一次我去公司报销一下车票,同事只跟我说在15楼,但具体在哪个地方他也不清楚。于是我上了15楼一进门就开始问了一下15前台,前台MM她说她也不清 楚,可以问一下旁边的保险组,保险组是我们负责我们公司保险索赔的,其他车费报销他也不清楚。于是他就跟我们一直往前走问一下福利组,福利组知道后就告诉 我说应该知财务组报销,地点就在我后面。于是我走过去把表格填了交下车票就走了。

 

这段事情看似简单其实就是一个责任链模式了,每个成员组都只负责自己范围内的工作。对于范围外的工作内容可能一概不知,或只知道一点点。于是当你找保险组时,他看到车票不是在他的工作范围内时。他会把你介绍到他旁边的福利组。下面我们就用代码来解释一下他们吧:

首先定义一个请求类,这个请求类就是我需要报销车票:

 

1.interface Handle(处理不同事务)

package com.xuyi.responsibility;

public interface Handle {
	public void handleRequest(Request request);
}

 2.三个不同部门处理不同事务

HandleBoon.java

package com.xuyi.responsibility;

/**
 * 福利组
 * @author xuyi
 *
 */
public class HandleBoon implements Handle {

	private Handle otherHandle;
	
	
	public void setOtherHandle(Handle otherHandle) {
		this.otherHandle = otherHandle;
	}


	public void handleRequest(Request request) {
		System.out.println("访问福利组");
		
		if(request.getType().equals("福利")){
			System.out.println("在福利组获取福利");
			request.setFinished(true);
		}else{
			if(otherHandle!=null&&!request.isFinished())
				otherHandle.handleRequest(request);
		}
	}

}

 HandleInsure.java

package com.xuyi.responsibility;

/**
 * 医疗组
 * @author xuyi
 *
 */
public class HandleInsure implements Handle {

	private Handle otherHandle;
	
	
	public void setOtherHandle(Handle otherHandle) {
		this.otherHandle = otherHandle;
	}


	public void handleRequest(Request request) {
		System.out.println("访问医疗组");
		
		if(request.getType().equals("医保")){
			System.out.println("在医疗组获取医保");
			request.setFinished(true);
		}else{
			if(otherHandle!=null&&!request.isFinished())
				otherHandle.handleRequest(request);
		}
	}

}

 HandleFinance.java

package com.xuyi.responsibility;

/**
 * 财务组
 * @author xuyi
 *
 */
public class HandleFinance implements Handle {

	private Handle otherHandle;
	
	
	public void setOtherHandle(Handle otherHandle) {
		this.otherHandle = otherHandle;
	}


	public void handleRequest(Request request) {
		System.out.println("访问财务组");
		
		if(request.getType().equals("车费")){
			System.out.println("在财务组获取车费");
			request.setFinished(true);
		}else{
			if(otherHandle!=null&&!request.isFinished())
				otherHandle.handleRequest(request);
		}
	}

}
 

3.发出的请求

Request.java

package com.xuyi.responsibility;

/**
 * 请求事务
 * @author xuyi
 *
 */
public class Request {
	
	private String type;
	
	private boolean finished;

	public boolean isFinished() {
		return finished;
	}

	public void setFinished(boolean finished) {
		this.finished = finished;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}
	
	
	
	
}

 4.Test.java

package com.xuyi.responsibility;

//Chain of Responsibility模式(责任链模式)
public class Test {

	public static void main(String[] args) {
		HandleBoon handleBoon = new HandleBoon();
		HandleInsure handleInsure = new HandleInsure();
		HandleFinance handleFinance = new HandleFinance();
		//装载链条
		handleBoon.setOtherHandle(handleInsure);
		handleInsure.setOtherHandle(handleFinance);
		
		//发出请求
		Request request = new Request();
		request.setType("医保");
		
		handleBoon.handleRequest(request);
		
	}
	
}
 
分享到:
评论

相关推荐

    设计模式C++学习之责任链模式(Chain of Responsibility)

    责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者之间的关系,使得系统更加灵活,...

    c++-设计模式之责任链模式(Chain of Responsibility Pattern)

    责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求的发送者和接收者解耦。通过将请求沿着处理链传递,直到有对象处理该请求为止,这种模式避免了请求发送者与具体处理者之间的紧...

    设计模式 - Chain of Responsibility Pattern(责任链模式)

    NULL 博文链接:https://linkcqu.iteye.com/blog/355806

    (行为型模式) Chain Of Responsibility 职责链模式

    C#面向对象设计模式 (行为型模式) Chain Of Responsibility 职责链模式 视频讲座下载

    Chain of Responsibility模式

    Chain of Responsibility模式是GOF(GoF,Gang of Four)在他们的经典著作《设计模式:可复用面向对象软件的基础》中提出的23种设计模式之一,属于行为模式类别。这个模式的主要目的是允许在对象之间传递请求,同时...

    Chain of Responsibility 职责链模式

    C#面向对象设计模式 Chain of Responsibility 职责链模式 视频讲座下载

    java设计模式之责任链(chain of responsibility)

    责任链(Chain of Responsibility)模式是一种行为设计模式,它允许我们向对象链中传递请求,让每个对象决定是否处理这个请求。在Java中,这种模式常用于事件处理、日志系统或者权限控制等场景,其核心思想是将处理...

    【Java设计模式】(3)责任链Chain of Responsibility

    **Java设计模式——责任链(Chain of Responsibility)** 在软件工程中,设计模式是一种解决常见问题的可重用解决方案。责任链模式是行为设计模式之一,它的主要思想是将请求的发送者和接收者解耦,通过将多个处理...

    C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility 职责链模式

    职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。在C#中,职责链模式的应用可以帮助我们构建灵活、可扩展的系统,减少对象...

    Chain Of Responsibility模式

    Chain of Responsibility(责任链)模式是一种行为设计模式,它允许将请求沿着处理者对象的链进行发送,每个对象都可以处理请求或将其传递给链中的下一个对象。这种模式常用于事件处理或者命令的执行流程,使得多个...

    chain of responsibility 职责链模式(行为模式)

    职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求的发送者和接收者解耦,使得多个对象都有可能处理一个请求,而无需显式指定接收者。在这个模式中,请求沿着一个处理者链进行传递,...

    JAVA设计模式chm文档

    创建模式: ...设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor

    C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) (Level 300)

    职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许你将请求沿着处理者对象的链进行传递,直到某个对象处理该请求。在C#编程中,职责链模式能够帮助我们实现一种松耦合的架构,使得请求的发送者和...

    chain-of-responsibility-demo 责任链模式demo

    责任链模式是一种行为设计模式,它允许我们向多个对象中的一个发送请求,而无需知道哪个对象会处理这个请求。在责任链模式中,接收者和发送者之间没有直接的耦合,请求会在一系列对象(链)中传递,直到某个对象处理...

    C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式)

    ### C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) #### 概述 在本篇文章中,我们将深入探讨C#中的Chain of Responsibility(职责链)模式,这是行为型设计模式的一种。虽然标题...

    Java设计模式之责任链模式(Chain of Responsibility模式)介绍

    责任链模式(Chain of Responsibility,CoR)是一种行为设计模式,它允许将请求沿着处理者对象的链式结构进行传递,直到某个对象处理这个请求。每个处理者对象都包含对下一个处理者的引用,如果当前处理者无法处理...

    设计模式文档 chm

    设计模式参考文档 ...设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor

    设计模式之美—学习笔记

    职责链模式(Chain of Responsibility)让多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合。 在实际编程中,理解并灵活运用设计模式能够提升代码质量,增强系统的可扩展性和可维护性。学习设计...

    设计模式之责任链模式Java实现

    责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求为止。在Java中,我们可以通过接口和类的组合来实现这种模式。让我们深入探讨...

Global site tag (gtag.js) - Google Analytics