JAVA 设计模式 职责链模式

简介:

用途


职责链模式 (Chain Of Responsibility)
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
职责链模式是一种 行为型模式


 

结构

图-职责链模式

Handler : 定义一个处理请求的接口。( 可选的)实现设置后继者的方法。
复制代码
abstract  class Handler {
     protected Handler successor;
     public  void SetSuccesssor(Handler successor) {
         this.successor = successor;
    }
    
     public  abstract  void HandlerRequest( int request);
}
复制代码

ConcreteHandler : 处理它所负责的请求,可以访问它的后继者,如果可处理该请求,就处理之,否则就将请求转发给它的后继者。

复制代码
class ConcreteHandler1  extends Handler {
    @Override
     public  void HandlerRequest( int request) {
         if (request >= 0 && request < 10) {
            System.out.println("ConcreteHandler1 处理请求 " + request);
        }  else  if ( null != successor) {
            successor.HandlerRequest(request);
        }
    }
}

class ConcreteHandler2  extends Handler {
    @Override
     public  void HandlerRequest( int request) {
         if (request >= 10 && request < 20) {
            System.out.println("ConcreteHandler2 处理请求 " + request);
        }  else  if ( null != successor) {
            successor.HandlerRequest(request);
        }
    }
}

class ConcreteHandler3  extends Handler {
    @Override
     public  void HandlerRequest( int request) {
         if (request >= 20 && request < 30) {
            System.out.println("ConcreteHandler3 处理请求 " + request);
        }  else  if ( null != successor) {
            successor.HandlerRequest(request);
        }
    }
}
复制代码

Client : 需要设置一个职责链的各环节对象串联起来。

复制代码
public  class ChainOfResponsibilityPattern {
     public  static  void main(String[] args) {
        Handler h1 =  new ConcreteHandler1();
        Handler h2 =  new ConcreteHandler2();
        Handler h3 =  new ConcreteHandler3();
        h1.SetSuccesssor(h2);
        h2.SetSuccesssor(h3);
        
         int[] requests = {2, 29, 9, 15, 4, 19};
         for ( int i : requests) {
            h1.HandlerRequest(i);
        }
    }
}
复制代码

本文转自静默虚空博客园博客,原文链接:http://www.cnblogs.com/jingmoxukong/p/4241496.html,如需转载请自行联系原作者

相关文章
|
17天前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 职责链模式
js设计模式【详解】—— 职责链模式
28 8
|
11天前
|
设计模式 Java
Java中的设计模式及其应用场景解析
Java中的设计模式及其应用场景解析
|
8天前
|
设计模式 测试技术 Python
《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
【7月更文挑战第10天】Page Object Model (POM)是Selenium自动化测试中的设计模式,用于提高代码的可读性和维护性。POM将每个页面表示为一个类,封装元素定位和交互操作,使得测试脚本与页面元素分离。当页面元素改变时,只需更新对应页面类,减少了脚本的重复工作和维护复杂度,有利于团队协作。POM通过创建页面对象,管理页面元素集合,将业务逻辑与元素定位解耦合,增强了代码的复用性。示例展示了不使用POM时,脚本直接混杂了元素定位和业务逻辑,而POM则能解决这一问题。
25 6
|
5天前
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
【7月更文挑战第12天】在本文中,作者宏哥介绍了如何在不使用PageFactory的情况下,用Java和Selenium实现Page Object Model (POM)。文章通过一个百度首页登录的实战例子来说明。首先,创建了一个名为`BaiduHomePage1`的页面对象类,其中包含了页面元素的定位和相关操作方法。接着,创建了测试类`TestWithPOM1`,在测试类中初始化WebDriver,设置驱动路径,最大化窗口,并调用页面对象类的方法进行登录操作。这样,测试脚本保持简洁,遵循了POM模式的高可读性和可维护性原则。
13 2
|
8天前
|
设计模式 安全 Java
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
25 1
|
10天前
|
设计模式 Java 数据库连接
Java中的设计模式在实际项目中的应用
Java中的设计模式在实际项目中的应用
|
18天前
|
设计模式 Java
设计模式在Java项目中的实际应用
设计模式在Java项目中的实际应用
|
16天前
|
设计模式 消息中间件 负载均衡
实现可扩展和可靠的分布式系统的Java设计模式
实现可扩展和可靠的分布式系统的Java设计模式
|
18天前
|
设计模式 缓存 算法
编写高效的Java工具类:实用技巧与设计模式
编写高效的Java工具类:实用技巧与设计模式
|
15天前
|
设计模式 Java 数据安全/隐私保护
Java中的设计模式:从入门到精通
Java中的设计模式:从入门到精通

热门文章

最新文章