`
HelloJimmy
  • 浏览: 35519 次
  • 性别: Icon_minigender_1
  • 来自: LostTemple
社区版块
存档分类
最新评论

责任链模式的一种变种

阅读更多
有关责任链模式请参考http://www.iteye.com/topic/343210

引言:此变种模式是主要根据面向对象的设计原则之一的“类的单一职责”和“开放和封闭原则”演变而来。

分析:原抽象处理者角色(Handler)是一个抽象类,代码一般如下:

# public abstract class Handler {  
#     protected Handler successor;  
#     protected String name;  
#   
#     public String getName() {  
#         return name;  
#     }  
#   
#     //处理请求,由子类完成   
#     public abstract void handleRequest(String request);  
#   
#     //设置下一个处理请求的人   
#     public void setNextHandler(Handler successor) {  
#         this.successor = successor;  
#     }  
# }  


通过分析我们可以发现其职责实际上有两个:
1.按照相应职责进行相应处理,即handleRequest方法;
2.设置下一个责任处理者;

现在我们企图把她的职责单一化,我们可以抽出两个接口,一个是处理请求接口,即:

public interface Processor {
   void process(Object request);
}


另外一个可以独立设置处理链条,即:
public interface Chain {
    void add(Processor p);
    void add(Processor p, int index);
    void remove(Processor p);
    void remove(Processor p, int index);
    Processor get(int index);
    int getCount();
}


最后,具体类实现这两个接口即可。


分享到:
评论

相关推荐

    设计模式职责链模式PPT学习教案.pptx

    **职责链模式(Chain of Responsibility Pattern)**是一种行为型设计模式,它允许将多个对象串联成一个处理请求的链。在职责链模式中,一个请求沿着处理者链传递,每个对象都有机会处理请求,直到找到合适的处理者...

    23种JAVA设计模式和15种J2EE设计模式

    12. **责任链模式**:处理请求的对象形成一条链,请求沿着链传递,直到被某个对象处理。 13. **命令模式**:将请求封装为一个对象,以便使用不同的请求、队列请求或参数化不同请求。 14. **解释器模式**:定义一个...

    GOF_23种设计模式

    - **职责链模式**:职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 - **命令模式**:命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化;对请求...

    java23种设计模式

    13. **责任链模式**:将请求的发送者和接收者解耦,通过链式结构传递请求,直到找到处理者。 14. **命令模式**:将一个请求封装为一个对象,以便使用不同的请求、队列请求、或者记录请求日志。在Java中,Swing的...

    C#设计模式(PDF)

    以上仅是C#设计模式中的一部分,实际还包括代理模式、模板方法模式、状态模式、职责链模式等。理解并熟练运用这些设计模式,能极大地提升C#编程的效率和代码质量,帮助开发者构建出更加灵活、可维护的软件系统。

    二十三种设计模式【PDF版】

    我上面这些描述其实都是一种模式,创建模式的人是大师,但是拘泥于模式的人永远是工匠. 再回到传统建筑中,中国的传统建筑是过分注重模式了,所以建筑风格发展不大,基本分南北两派,大家有个感觉,旅游时,到南 方,你发现...

    java设计模式

    13. **责任链模式**:处理请求的发送者将请求传递给一系列处理者,每个处理者都可以选择处理请求或者将请求传递给下一个处理者。 14. **命令模式**:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行...

    java教程

    - **行为型模式**:包括策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、责任链模式(Chain of ...

    Java设计100例代码

    14. 职责链模式:避免请求的发送者和接收者之间的耦合,通过将对象链接成链,沿着链传递请求,直到被处理。"ChainOfResponsibilityPattern"可能包含处理请求的多个对象形成链的示例。 15. 命令模式:将请求封装为一...

    基于PHP的采用LGPL协议授权的MVC开发框架源码.zip

    MVC(Model-View-Controller)模式是一种设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在PHP世界中,MVC框架极大地提高了开发效率和代码的可维护性。 **一、LGPL...

    算法文档无代码浅谈信息学中变与不变的关系

    在信息学中,抽象化是一种重要的思维模式。抽象化的核心思想是忽略掉问题的非本质细节,抓住问题的本质特征。通过抽象化,可以将复杂的问题简化为几个简单的模块,以模块化的方式处理问题。而这些模块之间,既有相对...

    21春南开大学《工程项目管理》在线作业-2参考答案.docx

    - **BOOT、BOO、BLT**:这些是BOT模式的一些变种,它们在不同国家和地区有着广泛的应用。 ### 工程项目后评价的逻辑框架法 - **LFM(Logic Framework Methodology)**:这是一种系统化的评价方法,通过明确项目的...

Global site tag (gtag.js) - Google Analytics