`
TRAMP_ZZY
  • 浏览: 139071 次
社区版块
存档分类
最新评论

设计模式-责任链模式模式

阅读更多

定义:使多个对象有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象练成一条链,并沿着这条链传递该请求。




public abstract class Handler {
	public final static int FATHER_LEVEL_REQUEST = 1;
	public final static int HUSBAND_LEVEL_REQUEST = 2;
	public final static int SON_LEVEL_REQUEST = 3;
	
	private int level = 0;
	private Handler nextHandler;
	
	public Handler(int level) {
		this.level = level;
	}
	
	public final void handleMessage(IWomen women) {
		if (women.getType() == this.level) {
			this.response(women);
		} else {
			if (this.nextHandler != null) {
				this.nextHandler.handleMessage(women);
			} else {
				System.out.println("no place to request");
			}
		}
	}
	
	public void setNext(Handler handler) {
		this.nextHandler = handler;
	}
	
	protected abstract void response(IWomen women);
}

public class Father extends Handler {

	public Father() {
		super(Handler.FATHER_LEVEL_REQUEST);
	}

	@Override
	protected void response(IWomen women) {
		System.out.println("daughter to father :");
		System.out.println(women.getRequest());
		System.out.println("Father's answer is yes.");
	}

}

public class Husband extends Handler {

	public Husband() {
		super(Handler.HUSBAND_LEVEL_REQUEST);
	}

	@Override
	protected void response(IWomen women) {
		System.out.println("wife to husband : ");
		System.out.println(women.getRequest());
		System.out.println("husband's answer is yes.");
	}

}

public class Son extends Handler {

	public Son() {
		super(Handler.SON_LEVEL_REQUEST);
	}

	@Override
	protected void response(IWomen women) {
		System.out.println("Mother to son : ");
		System.out.println(women.getRequest());
		System.out.println("the son's answer is yes.");
	}

}

public interface IWomen {
	public int getType();
	public String getRequest();
}

public class Women implements IWomen {

	private int type = 0;
	private String request;
	
	public Women(int type, String request) {
		this.type = type;
		switch (this.type) {
			case 1 : {
				this.request = "daughter's request is : " + request;
				break;
			}
			case 2: {
				this.request = "wife's request is : " + request;
				break;
			}
			case 3: {
				this.request = "mother's request is : " + request;
				break;
			}
		}
	}
	
	@Override
	public int getType() {
		return this.type;
	}

	@Override
	public String getRequest() {
		return this.request;
	}

}

public class Client {

	public static void main(String[] args) {
		Random rand = new Random();
		ArrayList<IWomen> arr = new ArrayList<>();
		for (int i=0; i<5; i++) {
			arr.add(new Women(rand.nextInt(4), "I want to go shopping."));
		}
		
		Handler father = new Father();
		Handler husband = new Husband();
		Handler son = new Son();
		
		father.setNext(husband);
		husband.setNext(son);
		
		for (IWomen women : arr) {
			father.handleMessage(women);
		}
	}

}




  • 大小: 30.2 KB
  • 大小: 12.3 KB
分享到:
评论

相关推荐

    JAVA-设计模式-行为型模式-责任链模式

    JAVA-设计模式-行为型模式-责任链模式

    c++设计模式-行为型模式-责任链模式

    c++设计模式-行为型模式-责任链模式;qt工程;c++简单源码; 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的...

    设计模式-责任链模式

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

    java设计模式-责任链模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...

    java常用设计模式-责任链模式

    责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着处理链进行传递,直到有一个处理程序处理它为止。在 Java 中实现责任链模式通常需要以下几个步骤: 定义处理器接口 首先,...

    Java设计模式--责任链模式.docx

    责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它使你能在不明确指定接收者的情况下,将请求沿着处理者对象的链式结构进行传递。每个处理者对象都包含对下一个处理者的引用,如果某个处理者...

    设计模式 - 职责链模式(C++实例)

    职责链模式(Chain of Responsibility)是一种行为设计模式,它的核心思想是将一系列处理请求的对象组织成一条链,每个对象都包含对请求的处理或传递的责任。在C++中实现职责链模式,我们可以创建一个抽象处理器类,...

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    设计模式专题之(十五)责任链模式---设计模式责任链模式示例代码(python--c++)

    在“设计模式专题之(十五)责任链模式---设计模式责任链模式示例代码(python--c++)”中,我们可以期待看到两种编程语言——Python和C++——实现的责任链模式。这两种实现都旨在展示如何通过构建处理请求的对象链来...

    设计模式课件大全

    设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于...

    java设计模式---诙谐易懂版

    代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法...责任链模式(Chain of Responsibility Pattern)、访问者模式(Visitor Pattern)、状态模式(State Pattern)、原型模式(Prototype Pattern...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 责任链模式(Chain of Responsibility):避免将请求的发送者和接收者耦合在一起,使得多个对象都有可能处理请求。 - 命令模式(Command):将请求封装为一个对象,以便使用不同的请求、队列请求、或者支持可...

    Andy619-Zhu#CS-Notes-chu#设计模式 - 责任链1

    Handler:定义处理请求的接口,并且实现后继链(successor)public abstract class Handler {public class

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

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

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

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

    c#代码介绍23种设计模式-21责任链模式(附代码)

    在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1...从责任链模式的定义可以发现,责任链模式涉及的对象只有处理者角色,但由于有多个处理者,它

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

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

    Java设计模式----通俗易懂版

    - 责任链模式:将请求沿着处理者链传递,直到被某个对象处理。 - 命令模式:将请求封装为一个对象,以便使用不同的请求、队列请求或记录请求。 - 解释器模式:提供一个语言的文法表示,并定义了一个接口,用于...

    设计模式-C++

    创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    设计模式-职责链模式(讲解及其实现代码)

    职责链模式是一种行为设计模式,它允许我们定义一系列对象,这些对象可以按顺序接收请求,每个对象都可以处理请求或将其传递给链中的下一个对象。这种模式使得我们可以将请求的发送者与接收者解耦,同时增加了系统...

Global site tag (gtag.js) - Google Analytics