(文章翻译自Java Design Pattern: Chain of Responsibility)

职责链模式的主要设计思想是为了构建一连串的处理单元,如果阈值满足的话那么这个单元就来处理这个请求。自从这个链构建以后,如果一个单元不满足,那么就会尝试调用下一个,以此类推。每一个请求会沿着这个链被处理。

职责链模式类图

职责链Java 代码

package designpatterns.cor;

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) {
next = chain;
} public void message(String msg, int priority) {
//if the priority is less than Threshold it is handled
if (priority <= Threshold) {
writeMessage(msg);
} if (next != null) {
next.message(msg, priority);
}
} abstract protected void writeMessage(String msg);
} class A extends Chain {
public A(int threshold) {
this.Threshold = threshold;
} protected void writeMessage(String msg) {
System.out.println("A: " + msg);
}
} class B extends Chain {
public B(int threshold) {
this.Threshold = threshold;
} protected void writeMessage(String msg) {
System.out.println("B: " + msg);
}
} class C extends Chain {
public C(int threshold) {
this.Threshold = threshold;
} protected void writeMessage(String msg) {
System.out.println("C: " + msg);
}
} public class ChainOfResponsibilityExample { private static Chain createChain() {
// Build the chain of responsibility 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;
} 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);
} }

在这个例子中,Level1穿过了这个链中的每一个处理单元。

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

[译]ava 设计模式之职责链的更多相关文章

  1. php设计模式之职责链模式

    <?php /** * @desc php设计模式之职责链模式(责任链模式) 定义:顾名思义,责任链模式为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这 ...

  2. 设计模式之职责链模式(JAVA实现)

    学习netty框架时,看到有人说netty用到了设计模式的职责链模式,学习一下职责链模式,主要参考大话设计模式. 主要场景: 小菜想要加薪,向经理提出加薪请求,经理没有权限,经理交由总监处理,总监也没 ...

  3. 设计模式-利用职责链模式消除if

    本文是对职责链设计模式的应用(变种),所以假设读者已经掌握了职责链设计模式,职责链模式只会应景简介. 本文主要内容: 需求(ShitCode) 职责链模式简介 设计理念 代码演示(消除if) 应用总结 ...

  4. C#设计模式之职责链

    Iron之职责链 需求: "Iron"的建造一直没有停止,现在单个部件是有的,但是在部件从工厂里出来的时候,在组装到一起之前,我们还是非常有必要对部件进行质量检测,或者是其它个方面 ...

  5. 设计模式:职责链模式(Chain Of Responsibility)

    定  义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止. 结构图: 处理请求类: //抽象处理类 abs ...

  6. 设计模式之职责链模式(Chain of Responsibility)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  7. TypeScript设计模式之职责链、状态

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  8. Java设计模式之职责链设计模式

    1.什么是-职责链设计模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求 ...

  9. 深入理解JavaScript系列(38):设计模式之职责链模式

    介绍 职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象 ...

随机推荐

  1. 理解git经常使用命令原理

    git不同于类似SVN这样的版本号管理系统,尽管熟悉经常使用的操作就能够满足大部分需求,但为了在遇到麻烦时不至于靠蛮力去尝试,了解git的原理还是非常有必要. 文件 通过git管理的文件版本号信息所有 ...

  2. java项目导出为一个可执行文件jar包

    1.选择要导出的项目. 对->export,选java在下面JAR file->next,选择要导出路径->next,finish. 2.选中导出的jar文件用压缩文件管理器打开 3 ...

  3. Python 相机镜头

    一哥第一卷感叹,这家奥地利~.这是什么g8事件,近盲目安装3g的OpenCV,结果徒劳. . . 入题.!环境Python2.7 严厉格按照什么步骤.必成功: 所需的软件如下面: VideoCaptu ...

  4. Cocos2dx 3.0 过渡篇(二十五)死不了的贪食蛇(触摸版)

    上一篇写的贪食蛇的重力感应控制版,这一篇就讲下触摸控制版吧.额,也不知道写了那个贪食蛇教程究竟有没有获得沈老师的书,假设没有的话,看我不拿西瓜刀砍掉 偶尔E往事 的那啥! 重力版链接:http://b ...

  5. Centos7系统配置上的变化(二)网络管理基础

    原文 Centos7系统配置上的变化(二)网络管理基础 上篇简单介绍了CentOS 7 在服务和网络方面的一点变化,先前很多烂熟于心的操作指令已经不适用了,不管是否习惯,总要接受.熟悉这些变化. 写上 ...

  6. 【Java】【jquery】ajax垃圾问题

    1.暗示HTML.JSP文件本身使用UTF-8格公式 2.HTML的head加: <META http-equiv="Content-Type" content=" ...

  7. 【LaTeX排版】LaTeX纸排版&lt;两&gt;

    1.文件夹的生成     直接使用命令\tableofcontents就可以. 其默认格式例如以下: 我们会发现.这种格式不一定是我们所期望的. 比方说,我们也希望章标题与页码之间也有点连线,而且也希 ...

  8. [Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现

    大家好,我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 今天我们来一起学习在Unity3D中怎样实现角色攀爬效果. 在RPG游戏中,某些游戏场景经常须要玩家 ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改 ASP.NET MVC+EF框架+EasyUI实现权限管系列  (开篇)   (1):框架搭建    ...

  10. 谈论Hibernate级联删除——JPA根据Hibernate实现许多级联删除CascadeType.DELETE_ORPHAN

    声明: 1.这篇文章是原创.非复制或转载过来. 2.在本文中,参数都亲自做过实验证明. 3.这篇文章谈到了Hibernate配置基于注释的方法.hbm语法不可用. 不清JPA.Hibernate.EJ ...