`

[原]责任链模式

阅读更多

[关键字]:java,design pattern,设计模式,《Java与模式》,Chain of Responsibility,责任链模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
[正文]:


package pattern.chainofresponsibility;

/**
 * 责任链模式:Chain of Responsibility
 * @version 2009-5-9
 * @author Winty(wintys@gmail.com)
 */
public class ChainOfResponsibilityTest{
    public static void main(String[] args){
        Handler handler1 = new ConcreteHandler1();
        Handler handler2 = new ConcreteHandler2();
        Handler handler3 = new ConcreteHandler3();

        //设置责任链
        handler3.setSuccessor(handler2);
        handler2.setSuccessor(handler1);

        //发送命令
        handler3.handleRequest();
    }
}

/**
 *抽象处理者
 */
abstract class Handler{
    protected Handler successor;

    public Handler getSuccessor(){
        return successor;
    }

    public void setSuccessor(Handler successor){
        this.successor = successor;
    }

    public abstract void handleRequest();
}

/**
 *具体处理者
 */
class ConcreteHandler1 extends Handler{
    public void handleRequest(){
        if(getSuccessor() != null){
            System.out.print("Request passed:from class Concrete1");
            System.out.println(" to class" + getSuccessor().getClass().getName());

            getSuccessor().handleRequest();
        }
        else{
            System.out.println("Request handled in ConcreteHandler1");
        }
    }
}

/**
 *具体处理者
 */
class ConcreteHandler2  extends Handler{
    public void handleRequest(){
        if(getSuccessor() != null){
            System.out.print("Request passed:from class Concrete2");
            System.out.println(" to class " + getSuccessor().getClass().getName());

            getSuccessor().handleRequest();
        }
        else{
            System.out.println("Request handled in ConcreteHandler2");
        }
    }
}

/**
 *具体处理者
 */
class ConcreteHandler3  extends Handler{
    public void handleRequest(){
        if(getSuccessor() != null){
            System.out.print("Request passed:from class Concrete3");
            System.out.println(" to class " + getSuccessor().getClass().getName());

            getSuccessor().handleRequest();
        }
        else{
            System.out.println("Request handled in ConcreteHandler3");
        }
    }
}

  • 大小: 45.6 KB
分享到:
评论

相关推荐

    java设计模式(工厂模式,动态代理,责任链模式……)实例源码

    这个压缩包中包含的实例源码涵盖了多种设计模式,包括工厂模式、动态代理和责任链模式。让我们深入探讨这些设计模式的核心概念、用途以及它们在实际编程中的应用。 1. 工厂模式:这是最基础的设计模式之一,属于...

    设计模式——原版的设计模式

    职责链模式避免将请求的发送者和接收者耦合在一起,而是将这些对象连成一条链,并沿着这条链传递请求,直到有对象处理它为止;访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的...

    UML(4)-单例、简单工厂、责任链、代理模式的UML

    责任链模式是一种行为设计模式,允许将请求沿着处理者链传递,直到某个处理者处理请求。在UML中,我们会看到一个接口或抽象类,如`Handler`,包含一个处理请求的方法。每个具体的处理者类(如`ConcreteHandler1`和`...

    软件设计精要与模式原代码

    4. **行为型模式**:如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、责任链模式(Chain of Responsibility)、命令模式(Command)、迭代器模式(Iterator)、访问者模式...

    java设计模式_原创

    其中包括责任链模式、命令模式、迭代器模式、访问者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。责任链模式通过建立处理请求的对象链,使得请求可以在链上传递,直到被某个对象...

    原创-设计模式实现代码

    - 责任链模式(Chain of Responsibility):避免向对象的发送者和接收者耦合具体的处理逻辑,将多个处理对象连接成一条链,并沿着这条链传递请求,直到有对象处理它为止。 - 状态模式(State):允许一个对象在其...

    23种java设计模式.pdf

    行为模式是指在对象的行为上使用的模式,包括 Iterator(迭代模式)、Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Interpreter(解释器模式)、...

    JavaScript 设计模式(高清扫描版本)- 张容铭

    3. 行为型模式:这些模式关注对象之间的交互和职责分配,包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。在JavaScript中...

    java设计模式代码实例

    10. **责任链模式(17-责任链模式)**:责任链模式允许将请求沿着处理者链传递,直到某个处理者处理请求。每个处理者都可以处理请求,或者将请求传递给链上的下一个处理者。 以上设计模式都是软件设计中的重要工具,...

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    3. **责任链模式**:在对象链中传递请求,由链上的对象决定是否处理该请求,使得系统可以在不影响客户端的情况下动态调整责任分配。 4. **策略模式**:定义一组可互换的算法,并封装起来,使得它们可以相互替换,...

    基于供应链的VMI模式分析.pdf

    这种模式打破了传统的库存管理模式,强调供应链的集成化管理,使得库存决策不再是单一企业的责任,而是供应链上各参与方共同协作的结果。 在实际操作中,VMI有多种运作模式: 1. 材料供应商到产品制造商模式:常见...

    价值链管理模式下企业财务管理研究.zip

    《价值链管理模式下企业财务管理研究》这篇文档主要探讨了在现代企业管理中,如何运用价值链管理模式来优化企业财务管理,提升企业的核心竞争力。价值链管理是一种系统性的管理理念,它将企业的各项活动分解为一系列...

    设计模式23中模式及其代码

    再者,行为型设计模式关注对象之间的职责分配和通信,如命令模式、解释器模式、迭代器模式、访问者模式、备忘录模式、状态模式、策略模式、模板方法模式和责任链模式。命令模式封装了请求作为对象,使得可以使用不同...

    研磨设计模式.rar

    行为型模式关注对象间的行为分配,如策略模式、观察者模式、访问者模式、责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、状态模式、模板方法模式和访问者模式,它们处理对象间的通信和行为。...

    Java设计模式深入研究

    行为型模式主要关注对象间如何通信和责任分配,例如策略模式、观察者模式、职责链模式等,它们有助于实现更复杂的控制流。 本书可能会详细讲解每个模式的原理、应用场景、优缺点以及如何在Java中实现。例如,单例...

    星巴克供应链管理模式.pdf

    首先,供给链是指从原材料采购到最终产品交付消费者的整个过程,包括供给商、制造商、分销商、零售商等多个环节。在这个过程中,信息流、物流、资金流的有效控制至关重要。 牛鞭效应是供给链管理中的一个重要问题,...

    供应链管理的模式选择与系统优化.pptx

    这个过程中,每个环节都有特定的角色和责任,如供应商提供原材料,制造商负责生产,分销商协调物流,零售商直接面对消费者。 【供应链管理的模式选择】 供应链管理的模式可以根据稳定性、容量与需求关系、交互作用...

    白沙集团管理模式与供应链设计方案(某咨询).pptx

    - **上下游供应链设计**:优化上游原材料供应和下游销售网络,提升供应链效率。 通过以上分析,白沙集团旨在通过管理模式的改革和供应链的优化,提升企业运营效率,增强市场竞争力,实现可持续发展。这涉及到集团...

    HeadFirst设计模式Java语言中文版附源码

    行为型模式关注对象间的行为分配,如策略模式、观察者模式、责任链模式等。 在Java语言中,设计模式的应用无处不在。例如,工厂模式提供了一种封装对象创建过程的方法,使得客户端不必了解具体的实现细节。而单例...

    第10章设计模式-解析1

    10. **责任链模式(Chain of Responsibility)**:责任链模式允许将多个对象链接成一个链,请求沿着链传递,直到某个对象处理它。在聊天系统的敏感词过滤场景中,责任链模式非常适用,因为可以灵活地添加或删除过滤...

Global site tag (gtag.js) - Google Analytics