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

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

阅读更多
Java Web中的Filter(包括struts2中的过滤器)就是典型的责任链模式,看了以下的代码,就大概能知道Filter是怎么个实现的了:

public class Request {
String requestStr;

public String getRequestStr() {
   return requestStr;
}

public void setRequestStr(String requestStr) {
   this.requestStr = requestStr;
}
}

public class Response {
String responseStr;

public String getResponseStr() {
   return responseStr;
}

public void setResponseStr(String responseStr) {
   this.responseStr = responseStr;
}

}

public interface Filter {
void doFilter(Request request, Response response, FilterChain chain);
}

public class FilterChain implements Filter {
List<Filter> filters = new ArrayList<Filter>();
int index = 0;

public FilterChain addFilter(Filter f) {
   this.filters.add(f);
   return this;
}

@Override
public void doFilter(Request request, Response response, FilterChain chain) {
   if(index == filters.size()) return ;
 
   Filter f = filters.get(index);
   index ++;
   f.doFilter(request, response, chain);
}
}

public class HTMLFilter implements Filter {


@Override
public void doFilter(Request request, Response response, FilterChain chain) {
   //process the html tag <>
   request.requestStr = request.requestStr.replace('<', '[')
       .replace('>', ']') + "---HTMLFilter()";
   chain.doFilter(request, response, chain);
   response.responseStr += "---HTMLFilter()";
}

}

public class SesitiveFilter implements Filter {


@Override
public void doFilter(Request request, Response response, FilterChain chain) {
   request.requestStr = request.requestStr.replace("被就业", "就业")
   .replace("敏感", "") + "---SesitiveFilter()";
   chain.doFilter(request, response, chain);
   response.responseStr += "---SesitiveFilter()";

}

}

public class Main {

/**
* @param args
*/
public static void main(String[] args) {
   String msg = "大家好:),<script>,敏感,被就业,网络授课没感觉,因为看不见大家伙儿";
   Request request = new Request();
   request.setRequestStr(msg);
   Response response = new Response();
   response.setResponseStr("response");
   FilterChain fc = new FilterChain();
   fc.addFilter(new HTMLFilter())
    .addFilter(new SesitiveFilter())
    ;
 
   fc.doFilter(request, response, fc);
   System.out.println(request.getRequestStr());
   System.out.println(response.getResponseStr());
}

}
分享到:
评论

相关推荐

    c++-设计模式之责任链模式(Chain of Responsibility Pattern)

    责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求的发送者和接收者解耦。通过将请求沿着处理链传递,直到有对象处理该请求为止,这种模式避免了请求发送者与具体处理者之间的紧...

    java设计模式之责任链(chain of responsibility)

    责任链(Chain of Responsibility)模式是一种行为设计模式,它允许我们向对象链中传递请求,让每个对象决定是否处理这个请求。在Java中,这种模式常用于事件处理、日志系统或者权限控制等场景,其核心思想是将处理...

    设计模式C++学习之责任链模式(Chain of Responsibility)

    责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者之间的关系,使得系统更加灵活,...

    【Java设计模式】(3)责任链Chain of Responsibility

    **Java设计模式——责任链(Chain of Responsibility)** 在软件工程中,设计模式是一种解决常见问题的可重用解决方案。责任链模式是行为设计模式之一,它的主要思想是将请求的发送者和接收者解耦,通过将多个处理...

    Chain of Responsibility模式

    Chain of Responsibility模式是GOF(GoF,Gang of Four)在他们的经典著作《设计模式:可复用面向对象软件的基础》中提出的23种设计模式之一,属于行为模式类别。这个模式的主要目的是允许在对象之间传递请求,同时...

    Chain of Responsibility 职责链模式

    C#面向对象设计模式 Chain of Responsibility 职责链模式 视频讲座下载

    (行为型模式) Chain Of Responsibility 职责链模式

    C#面向对象设计模式 (行为型模式) Chain Of Responsibility 职责链模式 视频讲座下载

    Chain Of Responsibility模式

    Chain of Responsibility(责任链)模式是一种行为设计模式,它允许将请求沿着处理者对象的链进行发送,每个对象都可以处理请求或将其传递给链中的下一个对象。这种模式常用于事件处理或者命令的执行流程,使得多个...

    设计模式 - Chain of Responsibility Pattern(责任链模式)

    NULL 博文链接:https://linkcqu.iteye.com/blog/355806

    Java设计模式之责任链模式(Chain of Responsibility模式)介绍

    责任链模式(Chain of Responsibility,CoR)是一种行为设计模式,它允许将请求沿着处理者对象的链式结构进行传递,直到某个对象处理这个请求。每个处理者对象都包含对下一个处理者的引用,如果当前处理者无法处理...

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

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

    C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility 职责链模式

    职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。在C#中,职责链模式的应用可以帮助我们构建灵活、可扩展的系统,减少对象...

    chain of responsibility 职责链模式(行为模式)

    职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求的发送者和接收者解耦,使得多个对象都有可能处理一个请求,而无需显式指定接收者。在这个模式中,请求沿着一个处理者链进行传递,...

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

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

    C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) (Level 300)

    职责链模式(Chain of Responsibility)是一种行为型设计模式,它允许你将请求沿着处理者对象的链进行传递,直到某个对象处理该请求。在C#编程中,职责链模式能够帮助我们实现一种松耦合的架构,使得请求的发送者和...

    chain-of-responsibility-demo 责任链模式demo

    责任链模式是一种行为设计模式,它允许我们向多个对象中的一个发送请求,而无需知道哪个对象会处理这个请求。在责任链模式中,接收者和发送者之间没有直接的耦合,请求会在一系列对象(链)中传递,直到某个对象处理...

    C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式)

    ### C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) #### 概述 在本篇文章中,我们将深入探讨C#中的Chain of Responsibility(职责链)模式,这是行为型设计模式的一种。虽然标题...

    JAVA设计模式chm文档

    创建模式: ...设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor

    设计模式文档 chm

    设计模式参考文档 ...设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor

Global site tag (gtag.js) - Google Analytics