essage从第一个链开始判断和处理,如果不能处理就传给下一个链,每一个链用handler表示。所有的链继承自同一个父类,Handler
使多个对象都有机会处理请求,从而避免请求的 发送者和接受者之间的耦合。将这些对象连成一个链,并按着这个链传递该请求,直到有一个对象处理他为止
public class Test {
public static void main(String[] args) {
Handler h1 = new BuyGoodsHandler();
Handler h2 = new PayMoneyHandler();
Handler h3 = new LogHandler();
h1.setNextHandler(h2);
h2.setNextHandler(h3);
h2.setPreHandler(h1);
Customer c = new Customer("lisi", h1);
c.buy();
}
static class Customer{
private String name;
private Handler h;
public Customer(String name, Handler h){
this.name = name;
this.h = h;
}
public void buy(){
h.doHandler();
}
}
}
//买东西--付钱--记日志
public class BuyGoodsHandler implements Handler {
private Handler nextHandler;
public void doHandler() {
try{
System.out.println("1.买东西");
//测试回退
// int i=0;
// i = 1/i;
nextHandler.doHandler();
}catch(Exception e){
rollback();
}
}
public void rollback() {
System.out.println("1.回退");
}
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
public void setPreHandler(Handler preHandler) {
}
}
public interface Handler {
//业务处理
void doHandler();
//业务回退
void rollback();
void setPreHandler(Handler preHandler);
void setNextHandler(Handler nexHandler);
}
public class LogHandler implements Handler {
private Handler preHandler;
public void doHandler() {
try{
System.out.println("3.记录日志");
int i = 0;
i = 1/i;
}catch(Exception e){
rollback();
}
}
public void rollback() {
System.out.println("3.回退");
this.preHandler.rollback();
}
public void setPreHandler(Handler preHandler) {
this.preHandler = preHandler;
}
public void setNextHandler(Handler nexHandler) {
}
}
public class PayMoneyHandler implements Handler {
private Handler preHandler;
private Handler nextHandler;
public void doHandler() {
try{
System.out.println("2.付钱");
// int i=0;
// i = 1/i;
this.nextHandler.doHandler();
}catch(Exception e){
rollback();
}
}
public void rollback() {
System.out.println("2.回退");
this.preHandler.rollback();
}
public void setPreHandler(Handler preHandler) {
this.preHandler = preHandler;
preHandler.setNextHandler(this);
}
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
nextHandler.setPreHandler(this);
}
}
相关推荐
《设计模式之责任链模式》这篇文章可能详细介绍了以下内容: 1. **模式介绍**:解释了责任链模式的基本概念,包括模式的主要结构和工作原理。 2. **实现步骤**:通过代码示例展示了如何在实际项目中实现责任链模式...
在“java设计模式之责任链模式”的主题中,我们可以深入探讨如何在实际项目中应用责任链模式,包括但不限于以下方面: 1. **代码结构优化**:通过责任链模式,可以使代码结构更加清晰,降低类间的耦合度。 2. **可...
责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求为止。在Java中,我们可以通过接口和类的组合来实现这种模式。让我们深入探讨...
责任链模式是设计模式中的一种行为模式,它允许在对象之间建立一条处理请求的链条,每个对象都包含对请求的处理逻辑,以及将请求传递给下一个对象的能力。这种模式使得请求可以在链上的对象之间传递,直到被某个对象...
责任链模式是一种行为设计模式,它的核心思想是将请求的发送者和接收者解耦,通过将多个处理对象串联成一个处理链,使得请求沿着这个链进行传递,直到被某个对象处理。这种模式使得系统更加灵活,可以在运行时动态...
一、责任链模式 现有 “战士”、“班长”、“排长”、“连长”,“营长”五种角色,当有人要请假时要进行以下处理 1.只能是下级象上级请假(如“排长”只能向“连长请假”) 2.班长可以批准1天内的假期,排长批5天,...
责任链模式是一种行为设计模式,它的核心思想是将一系列处理请求的对象串联成一条链,当一个请求到来时,会沿着这条链逐个处理,直到某个对象能够处理该请求为止。这种模式有效地解耦了发送请求的客户端和具体的处理...
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求的发送者和接收者解耦。通过将请求沿着处理链传递,直到有对象处理该请求为止,这种模式避免了请求发送者与具体处理者之间的紧...
责任链(Chain of Responsibility)模式是一种行为设计模式,它允许我们向对象链中传递请求,让每个对象决定是否处理这个请求。在Java中,这种模式常用于事件处理、日志系统或者权限控制等场景,其核心思想是将处理...
Java经典设计模式之责任链模式原理与用法详解 责任链模式是Java经典设计模式之一,它允许将请求沿着链传递,直到找到合适的处理者来处理请求。责任链模式的核心思想是将多个对象组成一个链,请求在这个链上传递,...
Java设计模式之责任链模式 Java设计模式之责任链模式是指在软件设计中,通过多个对象来处理一个请求,直到找到可以处理该请求的对象为止。这种模式的主要思想是将请求从一个对象传递到下一个对象,直到找到可以处理...
以下是关于JAVA设计模式中提及的四种模式——工厂模式、代理模式、迭代器模式以及责任链模式的详细说明。 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建...
责任链模式是一种行为设计模式,它允许我们把请求沿着处理者对象的链式结构进行传递,直到某个对象处理这个请求。这种模式使得我们能够将请求的发送者与接收者解耦,同时也允许在运行时动态地改变处理顺序或添加新的...
本篇将探讨两种重要的行为设计模式:责任链模式(Chain of Responsibility Pattern)和状态模式(State Pattern)。 **责任链模式**是一种使多个对象都有机会处理请求的模式,避免请求发送者与接收者之间的耦合。在...
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
责任链模式是一种行为设计模式,它允许将请求沿着处理者对象的链进行发送,而接收者可以在链中的任何位置处理该请求。这种模式的核心思想是将处理请求的对象组织成一个链条,每个对象(节点)都包含对下个处理者的...