设计模式值职责链模式(行为型)

目录

  • 一、行为型模式
  • 二、职责链模式定义
  • 三、职责链模式角色
  • 四、简单实例
  • 五、模式应用

一、行为型模式

介绍职责链模式之前先介绍一下行为型设计模式,因为按照GoF模式分类,职责链就是一种行为型设计模式。行为型设计模式就是主要表示类或者对象之间的关联关系,分为类行为型和对象行为型。类行为型一般都是通过类的继承或者多态等等方式实现。对象行为型就是通过对象的聚合等等关联实现。

二、职责链模式定义

职责链模式是一种对象行为型模式。根据“合成复用”原则,尽量使用关联来取代类继承,对象行为型可以说是一种不错的行为型模式。

职责链模式是一种将请求的发送者和请求处理者分离的一种模式。职责链可以是线型、环型或者树形的,不需要关系请求处理的细节,只要将请求沿着路径发送就好,做到了请求发送者和请求处理者解耦。

引用一下

Chain of Responsibility Pattern: Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.

翻译过来就是:

职责链模式:通过给予多个对象处理请求的机会,避免将请求的发送方与接收方耦合。将接收对象链接起来,并沿着链传递请求,直到对象处理它。

三、职责链模式角色

职责链模式包括下面几种角色:

  • Handler:抽象处理者
  • ConcreteHandler:具体处理者
  • Client:客户端

上面已经说了请求发送者和请求处理者,其实请求发送者就是客户端,请求处理者就是ConcreteHandler,也就是说,Client只是需要什么业务请求的就发送而已,完全可以对ConcreteHandler请求处理者改造,而不影响到Client,也就是前面所说的做到了请求发送者和请求处理者的解耦。

四、简单实例

例子参考:《设计模式》一书

抽象类:

public abstract class Handler
{
    protected Handler nextHandler;

    public void setNextHandler(Handler nextHandler)
    {
        this.nextHandler=nextHandler;
    }

    public abstract void handleRequest(String request);
}

具体实现者:

public class ConcreteHandler extends Handler
{
    public void handleRequest(String request)
    {
        if(请求request满足条件)
        {
            ......  //处理请求;
        }
        else
        {
            this.nextHandler.handleRequest(request); //转发请求
        }
    }
}

客户端调用:

public class Client
{
    public static void main(String args[])
    {
        Handler handler1 = new ConcreteHandler();
        handler handler2 = new ConcreteHandler();
        handler1.setNextHandler(handler2);
        handler1.handleRequest("test");
    }
}

网上这个例子也写的还可以,可以参考学习

http://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html

五、模式应用

在Java中的异常处理机制

try
{
    ……
}catch(IOException e3){
    ……
}finally{
    ……
}

Mybatis Plugin 插件(拦截器)的应用,也是用动态代理和职责链模式进行设计和实现的:

可以看一下博客:https://www.jianshu.com/p/b82d0a95b2f3

原文地址:https://www.cnblogs.com/mzq123/p/10161057.html

时间: 2024-11-03 22:51:26

设计模式值职责链模式(行为型)的相关文章

图解Java设计模式之职责链模式

图解Java设计模式之职责链模式 学校OA系统的采购审批项目 :需求是 传统方案解决OA系统审批,传统的设计方案 职责链模式基本介绍 职责链模式解决OA系统采购审批 职责链模式在SpringMVC框架应用的源码 职责链模式的注意事项和细节 学校OA系统的采购审批项目 :需求是 采购员采购教学器材1)如果金额 小于等于 5000,由教学主任审批 (0<=x<=5000)2)如果金额 小于等于 10000,由院长审批(5000 < x <= 10000)3)如果金额 小于等于 3000

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

学习netty框架时,看到有人说netty用到了设计模式的职责链模式,学习一下职责链模式,主要参考大话设计模式. 主要场景: 小菜想要加薪,向经理提出加薪请求,经理没有权限,经理交由总监处理,总监也没有权限,交由总经理处理,最后,总经理处理了,不同意. 职责链的意思就是,如果没有处理该类请求的权限,交由具有更高权限的对象处理.依次类推 这里将处理对象抽象为Handler类,经理.总监等为继承Handler的具体处理类,同时模拟客户端Client向Handler对象发出请求 类图如下 下面为具体代

行为型设计模式之职责链模式(Chain of Responsibility)

结构 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 适用性 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定. 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求. 可处理一个请求的对象集合应被动态指定. 1 using System; 2 3 abstract class Handler 4 { 5 protected Handler successorHand

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

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化托付给还有一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些详细的类的信息封装起来.第二,它们隐藏了这些类的实例是怎样被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,

java设计模式之职责链模式

[学习难度:★★★☆☆,使用频率:★★☆☆☆] "一对二","过","过"--这声音熟悉吗?你会想到什么?对!纸牌.在类似"斗地主"这样的纸牌游戏中,某人出牌给他的下家,下家看看手中的牌,如果要不起上家的牌则将出牌请求再转发给他的下家,其下家再进行判断.一个循环下来,如果其他人都要不起该牌,则最初的出牌者可以打出新的牌.在这个过程中,牌作为一个请求沿着一条链在传递,每一位纸牌的玩家都可以处理该请求.在设计模式中,我们也有一种专

JAVA设计模式之 职责链模式【Chain of Responsibility Pattern】

一.概述 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止.职责链模式是一种对象行为型模式. 核心在于引入一个抽象处理者类 二.适用场景 请求的链式处理,多个对象可以处理同一请求.但是具体由哪个对象来处理由运行时系统根据条件判断确定. 如请假业务场景: 三.UML类图 四.参与者 1.Handler(抽象处理者):它定义了一个处理请求的接口,一般设计为抽象类,由于不同的具体处理者处理请求的方式不同,因此在其中定义了

《设计模式》——职责链模式

职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求者的发送者和接受者之间的耦合关系,这个对象连接成一条链,并沿着这条连传递该请求,直到有一个对象处理它为止. UML图如下 具体例子分为三步 第一步:设置一个抽象类,抽象类中有两个无返回值的方法,一个是设置继承者的方法(SetSuccessor),另外一个是抽象方法,这个抽象方法被子类重写来处理具体的请求. 第二步:设置三个具体的继承者子类,自己继承抽象类,三个子类分别是ConcreteHandl

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

介绍 职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止. 也就是说,请求以后,从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给链中的下一个候选者.提交请求的对象并不明确知道哪一个对象将会处理它——也就是该请求有一个隐式的接受者(implicit receiver).根据运行时刻,任一候选者都可以响应相应的请求,候选者的数目是任意

设计模式之职责链模式

职责链模式 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合.将系统连成一条线,并沿着这条线传递请求,直到有一个对象处理他为止. Handler package com.hml.responsiblity; public abstract class Handler { protected Handler successor; public Handler getSuccessor() { return successor; } public void setSuccesso