`

设计模式:责任链模式

阅读更多

责任链模式的主要思想是是建立一个链处理单元,每一个单元如果满足条件都会处理请求。由于是链构建,如果一个单元不满足条件,那么就测试下一个单元等。每一条请求都会沿着链处理。

1、类图



 2、实例代码

package com.leon.chain;

public abstract class Chain {

	public static int One = 1;
	public static int Two = 2;
	public static int Three = 3;

	protected int threshold;
	protected Chain next;

	public void setNext(Chain chain) {
		this.next = chain;
	}

	public void message(String msg, int priority) {
		if (priority <= threshold) {
			writeMessage(msg);
		}

		if (this.next != null) {
			this.next.message(msg, priority);
		}
	}

	abstract void writeMessage(String msg);
}

 

package com.leon.chain;

public class Test {
	public static void main(String[] args) {

		Chain chain = createChain();

		chain.message("level 3", Chain.Three);

		chain.message("level 2", Chain.Two);

		chain.message("level 1", Chain.One);

	}

	public static Chain createChain() {
		Chain chain1 = new A(Chain.Three);

		Chain chain2 = new B(Chain.Two);
		chain1.setNext(chain2);

		Chain chain3 = new C(Chain.One);
		chain2.setNext(chain3);

		return chain1;
	}
}

class A extends Chain {

	public A(int threshold) {
		this.threshold = threshold;
	}

	@Override
	void writeMessage(String msg) {
		// TODO Auto-generated method stub
		System.out.println("A:"+msg);
	}

}

class B extends Chain {

	public B(int threshold) {
		this.threshold = threshold;
	}

	@Override
	void writeMessage(String msg) {
		// TODO Auto-generated method stub
		System.out.println("B:"+msg);
	}

}

class C extends Chain {

	public C(int threshold) {
		this.threshold = threshold;
	}

	@Override
	void writeMessage(String msg) {
		// TODO Auto-generated method stub
		System.out.println("C:"+msg);
	}

}

 在这个例子中,level 1的Message走过了链中所有的单元。

A:level 3
A:level 2
B:level 2
A:level 1
B:level 1
C:level 1

 原文链接:这里

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

相关推荐

    JAVA设计模式之行为模式 责任链模式和状态模式

    本篇将探讨两种重要的行为设计模式:责任链模式(Chain of Responsibility Pattern)和状态模式(State Pattern)。 **责任链模式**是一种使多个对象都有机会处理请求的模式,避免请求发送者与接收者之间的耦合。在...

    C#设计模式:责任链模式

     责任链模式是指一个处理需要涉及多个过程或者角色参与处理,并基于某个约定组成一个链,每个过程或者角色拥有各自职责进行处理。责任链模式有效组织一个过程处理,同时子过程之间职责明确。在.NET平台中很常见此...

    设计模式:职责链模式

    总的来说,职责链模式是一种非常实用的设计模式,它提供了一种方式来组织和分配责任,使得系统在处理请求时具有更好的灵活性和可扩展性。在实际开发中,例如在事件驱动系统、消息传递系统以及命令模式的实现中,职责...

    《设计模式:可复用面向对象软件的基础》英文版

    例如责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...

    设计模式:基于C#的工程化实现及扩展(完整电子版)

    总之,《设计模式:基于C#的工程化实现及扩展》是一本对于C#开发者来说非常有价值的参考资料,它不仅讲解了设计模式的理论,还提供了丰富的实践案例,帮助读者掌握如何在实际项目中应用这些模式,提升软件开发的专业...

    Java 经典设计模式讲解以及项目实战

    2 责任链模式 3 策略模式 4 模板方法模式 5 工厂方法模式 6 抽象工厂模式 7 建造者模式 8 代理模式 9 装饰模式 10 原型模式 11 委派模式 12 适配器模式 设计模式综合运用 1 门面+模版方法+责任链+策略 2 门面+模版...

    JAVA 设计模式 工厂模式 代理模式 迭代模式 责任链模式 源码

    4. **责任链模式**:责任链模式是行为型设计模式,它使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。在这个模式中,请求沿着处理者链进行传递,每个处理者都有机会处理请求,或者将请求传递...

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

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

    设计模式之责任链模式

    责任链模式是一种行为设计模式,它允许我们把请求沿着处理者链进行传递,直到某个处理者处理这个请求。这种模式让请求的发送者和接收者解耦,因为发送者无需知道哪个对象会处理请求,接收者也不知道其他处理者的存在...

    设计模式:可复用面向对象软件设计基础(附源码)

    3. **行为型模式**:包括责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。这些模式主要处理对象之间的交互和职责分配。 例如,单例模式...

    设计模式之责任链模式源码

    责任链模式是设计模式中的一种行为模式,它允许在对象之间建立一条处理请求的链条,每个对象都包含对请求的处理逻辑,以及将请求传递给下一个对象的能力。这种模式使得请求可以在链上的对象之间传递,直到被某个对象...

    设计模式-责任链模式

    责任链模式是一种行为设计模式,它允许我们把请求沿着处理者对象的链式结构进行传递,直到某个对象处理这个请求。这种模式使得我们能够将请求的发送者与接收者解耦,同时也允许在运行时动态地改变处理顺序或添加新的...

    设计模式之责任链模式(Chain)

    责任链模式是一种行为设计模式,它的核心思想是将请求的发送者和接收者解耦,通过将多个处理对象串联成一个处理链,使得请求沿着这个链进行传递,直到被某个对象处理。这种模式使得系统更加灵活,可以在运行时动态...

    【Java设计模式-源码】责任链模式:构建强大的请求处理机制

    在 Java 开发中,责任链模式是一种重要的行为设计模式,它可以解耦请求的发送者和接收者,使多个对象都有机会处理请求。本文将详细介绍责任链模式的意图、解释、编程示例、适用场景、实际应用、优点和权衡。同时,还...

    java设计模式之责任链模式

    责任链模式是软件设计模式中的一种行为模式,它允许在对象之间传递请求,同时让接收者决定是否处理这个请求。这种模式将请求的发送者和接收者解耦,使得多个对象都有机会处理一个请求,而无需显式指定具体的处理者。...

    1.《设计模式:可复用面向对象软件的基础(完整书签)》

    这类模式关注对象之间的责任分配,如命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、观察者模式(Observer)、状态模式(State)、策略...

    C#面向对象设计模式纵横谈(25):设计模式总结

    18. 责任链模式:责任链模式为请求创建一个接收者对象的链,请求沿着链传递,直到某个对象处理它。 19. 迭代器模式:迭代器模式提供了一种方法顺序访问集合对象的元素,而又不暴露其底层表示。 20. 访问者模式:...

Global site tag (gtag.js) - Google Analytics