`
huqi
  • 浏览: 96984 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

23种经典设计模式的java实现_5_职责链模式

阅读更多

对于职责链模式,一般是这么定义的:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,即——将这些对象连成一条(处理)链,并沿着这条链传递该请求,直到这条链结束同时有一个对象处理它为止。

最经典的职责链模式应用就是JavaEE规范中web.xml的filter了,filters按照配置的顺序,依次处理根据其mapping条件过滤得到的web请求(response)/应答(request),从而可以实现诸如编码转换、事务封装、页面缓存等众多“职责”。

给出职责链模式的适用范围:

1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。

2、想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。

3、可处理一个请求的对象集合需要被动态指定。

下面这个范例模拟了一个软件行业中常见的项目处理流程,为一个项目(Project对象)的职责人员构造了一条处理链,然后向这个项目发出处理指令——从而在这条链上引发相关职责人员的处理。代码如下:

职责的接口定义,所有的职责人员都要具有这些功能:加入下一职责对象、处理消息(即行使职责)、获得下一职责对象。

package com.alex.designpattern.chainofresponsibility;

/** *//**
 * The interface of the chain You can use AddChain function to modify the chain
 * dynamically.
 * 
 * 
@author <a href="mailto:huqiyes@gmail.com">huqi</a>
 * 
@serialData 2007
 
*/

public interface Chain ...{
    
public void addChain(Chain c);

    
public void sendToChain(String mesg);

    
public Chain getChain();
}

以下就是我们流程中所有的职责人员实现啦,依次为经理、项目经理、程序员、测试员及其它,它们根据mesg参数分别处理自己的消息——即行使特定的职责

package com.alex.designpattern.chainofresponsibility;

/** *//**
 * A beginner of the chain The resposibility of manager is to get a project
 
*/

public class Manager implements Chain ...{
    
private Chain nextChain = null;

    
private static final String Responsibility = "Getting Project";

    
public void addChain(Chain c) ...{
        nextChain 
= c;
    }


    
public Chain getChain() ...{
        
return nextChain;
    }


    
public void sendToChain(String mesg) ...{
        
if (mesg.equals(Responsibility)) ...{
            System.out.println(
"A Manager --> " + mesg);
        }
 else ...{
            
if (nextChain != null...{
                nextChain.sendToChain(mesg);
            }

        }

    }


}


package com.alex.designpattern.chainofresponsibility;

/** *//**
 * A member of the chain The resposibility of PM is to design the project
 
*/

public class ProjectManager implements Chain ...{
    
private Chain nextChain = null;

    
private static final String Responsibility = "Design";

    
public void addChain(Chain c) ...{
        nextChain 
= c;
    }


    
public Chain getChain() ...{
        
return nextChain;
    }


    
public void sendToChain(String mesg) ...{
        
if (mesg.equals(Responsibility)) ...{
            System.out.println(
"A Project Manager --> " + mesg);
        }
 else ...{
            
if (nextChain != null...{
                nextChain.sendToChain(mesg);
            }

        }

    }


}


package com.alex.designpattern.chainofresponsibility;

/** *//**
 * A member of the chain The resposibility of Programmer is coding
 
*/

public class Programmer implements Chain ...{
    
private Chain nextChain = null;

    
private static final String Responsibility = "Coding";

    
public void addChain(Chain c) ...{
        nextChain 
= c;
    }


    
public Chain getChain() ...{
        
return nextChain;
    }


    
public void sendToChain(String mesg) ...{
        
if (mesg.equals(Responsibility)) ...{
            System.out.println(
"A Programmer --> " + mesg);
        }
 else ...{
            
if (nextChain != null...{
                nextChain.sendToChain(mesg);
            }

        }

    }


}


package com.alex.designpattern.chainofresponsibility;

/** *//**
 * A member of the chain<br>
 * The resposibility of QA is test
 
*/

public class QA implements Chain ...{
    
private Chain nextChain = null;

    
private static final String Responsibility = "Testing";

    
public void addChain(Chain c) ...{
        nextChain 
= c;
    }


    
public Chain getChain() ...{
        
return nextChain;
    }


    
public void sendToChain(String mesg) ...{
        
if (mesg.equals(Responsibility)) ...{
            System.out.println(
"A QA --> " + mesg);
分享到:
评论

相关推荐

    Java之23种设计模式解析

    “%5B尚硅谷%5D_宋红康_Java+之23种设计模式解析.pdf”这份资料详细讲解了每种模式的概念、实现方式、优缺点以及实际应用场景,是深入学习和掌握Java设计模式的好助手。通过阅读和实践,开发者将能够更熟练地运用...

    设计模式JAVA版_刘伟.zip

    《设计模式JAVA版_刘伟》是一本专为Java程序员准备的经典书籍,旨在帮助初学者和有经验的开发者深入理解并熟练运用设计模式这一开发技术。设计模式是软件工程中的重要概念,它代表了在特定场景下解决问题的最佳实践...

    23种设计模式的Java实现

    以下是23种经典设计模式的概述及其在Java中的实现要点: 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。在Java中,可以使用枚举、双重检查锁定(DCL)或静态内部类等方式实现。 2. **...

    Java 23种设计模式17职责链模式.pdf

    ### Java设计模式详解:职责链模式 #### 行为型模式概述 行为型设计模式着重于定义对象间的职责分配及算法的抽象化。不同于结构型模式关注类和对象的组合,行为型模式更注重对象之间的交互与职责划分,强调的是在...

    23三种设计模式java实现

    以上就是23种设计模式的概述及其在Java中的实现方式。这些模式不仅有助于提高代码的可读性和可维护性,还能促进团队间的有效沟通,因为它们提供了共同的语言和解决问题的通用框架。在实际开发中,根据具体情况灵活...

    23种设计模式的JAVA实现

    本资料提供了23种设计模式的Java实现,是学习和理解设计模式的宝贵资源。 1. **单例模式(Singleton)**:保证一个类只有一个实例,并提供全局访问点。在Java中,可以通过双重检查锁定、静态内部类和枚举等方式实现...

    23种设计模式的实现(Java 版),全部的23种的设计模式(Java 版)

    这个压缩包包含了全部23种经典的GoF(Gang of Four)设计模式的Java实现,对于学习和理解设计模式有着极大的帮助。 1. **单例模式**:保证一个类只有一个实例,并提供一个全局访问点。Java中的实现通常使用双重检查...

    Java中23种经典设计模式

    本篇将深入探讨Java中的23种经典设计模式。 首先,我们来看创建型模式,它们主要关注对象的创建过程,旨在简化对象的实例化,提高灵活性和抽象程度。具体包括: 1. **工厂方法模式**:提供一个接口用于创建某一类...

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象...4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

    java之23种设计模式完整代码

    这里我们探讨的“Java之23种设计模式完整代码”是一份宝贵的资源,它包含了所有23种经典设计模式的实现示例。这份资料能够帮助开发者深入理解每种设计模式的概念、应用场景以及它们之间的差异。 设计模式是经过时间...

    23种设计模式的java实现源代码.rar

    这个压缩包“23种设计模式的java实现源代码.rar”包含了Java语言实现的全部23个经典设计模式,下面我们将逐一探讨这些设计模式及其在Java中的实现。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供...

    JAVA 23种设计模式(全).Design Pattern_Java模式

    本资料包“JAVA 23种设计模式(全).Design Pattern_Java模式”涵盖了所有23种经典的GOF(GoF,Gang of Four)设计模式,旨在帮助开发者深入理解和应用这些模式。 首先,我们来看一下23种设计模式的分类: 1. **创建...

    JAVA23中设计模式

    《JAVA23中设计模式》是一份针对Java程序员的指南,旨在通过一系列示例和理论讲解,帮助读者理解和掌握23种经典的设计模式。这些模式被广泛应用于软件开发中,能够提高代码的可维护性、灵活性和可扩展性。 #### 二...

    23种设计模式的java实现.rar

    "23种设计模式的java实现.rar" 包含了对这23个经典设计模式的Java实现,对于学习和理解设计模式有着重要的价值。 1. **单例模式 (Singleton)**:确保一个类只有一个实例,并提供全局访问点。在Java中,通常通过私有...

    Java的23种设计模式百度云下载链接.rar

    Java的23种设计模式是软件工程中非常重要的概念,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种复杂的软件开发中。设计模式不是具体的代码或库,而是一种通用的、可重用的设计方案,它描述了在特定上下文...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    职责链模式 进来者模式 访问者模式 数据结构 Stack - 使用泛型实现Stack 生成斐波那契数列 使用容器 利用迭代器实现原材料 实用程序 StringUtil类 - 封装常用的String方法 基本的 正则表达式的使用方式

    java的23种经典设计模式

    Java的23种经典设计模式是软件开发中的重要理论基础,它们是面向对象设计的精华,可以帮助开发者写出可复用、可维护、具有良好扩展性的代码。以下是对这23种设计模式的详细解读: 1. **单例模式**:确保一个类只有...

    23种设计模式的java实现

    本资源提供了23种经典设计模式的Java实现源码,帮助开发者深入理解和应用这些模式。 首先,我们来看看这23种设计模式的分类: 1. **创建型模式**(Creational Patterns):这类模式主要关注对象的创建,包括单例...

    23种Java设计模式和15种J2EE设计模式.pdf

    在深入探讨《23种Java设计模式和15种J2EE设计模式》这一主题之前,我们首先需要明确设计模式的概念及其在软件工程中的重要性。设计模式是一种在特定情境下解决问题的模板,它描述了在软件设计中遇到的问题以及解决...

Global site tag (gtag.js) - Google Analytics