国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計(jì)模式代碼實(shí)戰(zhàn)-責(zé)任鏈模式

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式代碼實(shí)戰(zhàn)-責(zé)任鏈模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、問題描述

小明所在的公司請(qǐng)假需要在OA系統(tǒng)上發(fā)布申請(qǐng),整個(gè)請(qǐng)求流程包括多個(gè)處理者,每個(gè)處理者負(fù)責(zé)處理不同范圍的請(qǐng)假天數(shù),如果一個(gè)處理者不能處理請(qǐng)求,就會(huì)將請(qǐng)求傳遞給下一個(gè)處理者,請(qǐng)你實(shí)現(xiàn)責(zé)任鏈模式,可以根據(jù)請(qǐng)求天數(shù)找到對(duì)應(yīng)的處理者。
審批責(zé)任鏈由主管(Supervisor), 經(jīng)理(Manager)和董事(Director)組成,他們分別能夠處理3天、7天和10天的請(qǐng)假天數(shù)。如果超過10天,則進(jìn)行否決。

輸入示例
4
Alice 2
Bob 5
Tom 10
Jerry 12

輸出示例
Alice Approved by Supervisor.
Bob Approved by Manager.
Tom Approved by Director.
Jerry Denied by Director.

2、責(zé)任鏈模式

其實(shí)就是單鏈表數(shù)據(jù)結(jié)構(gòu),一個(gè)個(gè)遞歸向后處理,當(dāng)前節(jié)點(diǎn)能處理就返回
設(shè)計(jì)模式代碼實(shí)戰(zhàn)-責(zé)任鏈模式,設(shè)計(jì)模式,設(shè)計(jì)模式,責(zé)任鏈模式,java文章來源地址http://www.zghlxwxcb.cn/news/detail-859350.html

3、代碼

import com.sun.java.accessibility.util.TopLevelWindowListener;

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        Supervisor s=new Supervisor();

        Manager m=new Manager();

        Director d=new Director();

        s.setNext(m);
        m.setNext(d);
        int number=Integer.parseInt(sc.nextLine());
        for(int i=0;i<number;i++){
            String input=sc.nextLine();
            String[] ss=input.split(" ");
            String username=ss[0];
            int day=Integer.parseInt(ss[1]);
            s.handleRequest(username,day);
        }



    }
}

interface Handler{
    void setNext(Handler next);
    Handler getNext();
    void handleRequest(String username,int time);
    boolean canHandleRequest(int time);
}

class Supervisor implements Handler{
    private  Handler next;
    @Override
    public void setNext(Handler next) {
        this.next=next;
    }

    @Override
    public Handler getNext() {
        return this.next;
    }

    @Override
    public void handleRequest(String username,int time) {
        if(canHandleRequest(time)){
            System.out.println(username+" Approved by Supervisor.");
        }else {
            Handler next=getNext();
            next.handleRequest(username,time);
        }
    }

    @Override
    public boolean canHandleRequest(int time) {
        if(time>3){
            return false;
        }
        return true;
    }
}

class Manager implements Handler{
    private  Handler next;
    @Override
    public void setNext(Handler next) {
        this.next=next;
    }

    @Override
    public Handler getNext() {
        return this.next;
    }

    @Override
    public void handleRequest(String username, int time) {
        if(canHandleRequest(time)){
            System.out.println(username+" Approved by Manager.");
        }else {
            Handler next=getNext();
            next.handleRequest(username,time);
        }
    }

    @Override
    public boolean canHandleRequest(int time) {
        if(time>5){
            return false;
        }
        return true;
    }
}


class Director implements Handler{
    private  Handler next;
    @Override
    public void setNext(Handler next) {
        this.next=next;
    }

    @Override
    public Handler getNext() {
        return this.next;
    }

    @Override
    public void handleRequest(String username, int time) {
        if(canHandleRequest(time)){
            System.out.println(username+" Approved by Director.");
        }else {
            System.out.println(username+" Denied by Director.");
        }
    }

    @Override
    public boolean canHandleRequest(int time) {
        if(time>10){
            return false;
        }
        return true;
    }
}

到了這里,關(guān)于設(shè)計(jì)模式代碼實(shí)戰(zhàn)-責(zé)任鏈模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式之責(zé)任鏈模式【Java實(shí)現(xiàn)】

    設(shè)計(jì)模式之責(zé)任鏈模式【Java實(shí)現(xiàn)】

    責(zé)任鏈(chain of Resposibility) 模式:為了避免請(qǐng)求發(fā)送者與多個(gè)請(qǐng)求處理者耦合在一起,于是將所有請(qǐng)求的處理者 通過前一對(duì)象記住其下一個(gè)對(duì)象的引用而連成一條鏈 ;當(dāng)有請(qǐng)求發(fā)生時(shí),可將請(qǐng)求沿著這條鏈傳遞,直到有對(duì)象處理它位置。屬于對(duì)象行為型模式。 抽象處理者

    2024年02月12日
    瀏覽(21)
  • 【Java 設(shè)計(jì)模式】行為型之責(zé)任鏈模式

    責(zé)任鏈模式(Chain of Responsibility Pattern)是一種行為型設(shè)計(jì)模式,用于將請(qǐng)求發(fā)送者和接收者解耦,使得多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求。責(zé)任鏈模式通過創(chuàng)建一個(gè)處理請(qǐng)求的鏈,將請(qǐng)求沿著鏈傳遞,直到有一個(gè)對(duì)象能夠處理為止。在本文中,我們將深入研究Java中責(zé)任鏈模式的定

    2024年01月24日
    瀏覽(23)
  • 【設(shè)計(jì)模式】Java 設(shè)計(jì)模式之責(zé)任鏈模式(Chain of Responsibility)

    責(zé)任鏈模式(Chain of Responsibility) 一、概述 責(zé)任鏈模式是一種行為設(shè)計(jì)模式,它允許請(qǐng)求在對(duì)象鏈中傳遞。每個(gè)對(duì)象都有機(jī)會(huì)處理該請(qǐng)求,并且能將其傳遞給鏈中的下一個(gè)對(duì)象。這種模式為請(qǐng)求創(chuàng)建了一個(gè)處理對(duì)象的鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理它為止

    2024年03月22日
    瀏覽(25)
  • 【玩轉(zhuǎn)23種Java設(shè)計(jì)模式】行為型模式篇:責(zé)任鏈模式

    軟件設(shè)計(jì)模式(Design pattern),又稱設(shè)計(jì)模式,是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。 匯總目錄鏈接:【玩轉(zhuǎn)23種Java設(shè)計(jì)模式】學(xué)習(xí)目錄匯總

    2024年02月13日
    瀏覽(18)
  • Java設(shè)計(jì)模式—責(zé)任鏈模式(Chin of Responsibility)

    Java設(shè)計(jì)模式—責(zé)任鏈模式(Chin of Responsibility)

    目錄 前言 一、責(zé)任鏈模式的簡(jiǎn)介 二、責(zé)任鏈模式的概念 三、責(zé)任鏈模式的作用 四、責(zé)任鏈模式的優(yōu)、缺點(diǎn) 1.責(zé)任鏈模式的優(yōu)點(diǎn) 2.責(zé)任鏈模式的缺點(diǎn) 五、責(zé)任鏈模式的應(yīng)用場(chǎng)景 六、代碼案例 UML類圖 ?1.定義一個(gè)請(qǐng)求枚舉類 ?2.定義一個(gè)請(qǐng)求類 3.定義一個(gè)抽象處理接口 4、定

    2024年02月08日
    瀏覽(27)
  • Java設(shè)計(jì)模式-責(zé)任鏈(Chain of Responsibility)模式

    Java設(shè)計(jì)模式-責(zé)任鏈(Chain of Responsibility)模式

    Java責(zé)任鏈(Chain of Responsibility)設(shè)計(jì)模式是指很多處理對(duì)象構(gòu)成一個(gè)鏈,鏈中前一個(gè)對(duì)象指向后一個(gè)對(duì)象。請(qǐng)求在鏈中傳遞,一個(gè)請(qǐng)求可以被一個(gè)或者多個(gè)對(duì)象處理。調(diào)用方(即客戶端)不知道請(qǐng)求會(huì)被鏈中的哪個(gè)對(duì)象處理,所以責(zé)任鏈模式可以方便組織責(zé)任鏈而不影響調(diào)用

    2024年02月16日
    瀏覽(19)
  • Java 大廠八股文面試專題-設(shè)計(jì)模式 工廠方法模式、策略模式、責(zé)任鏈模式

    Java 大廠八股文面試專題-設(shè)計(jì)模式 工廠方法模式、策略模式、責(zé)任鏈模式

    ????????在平時(shí)的開發(fā)中,涉及到設(shè)計(jì)模式的有兩塊內(nèi)容,第一個(gè)是我們 平時(shí)使用的框架 (比如spring、mybatis等),第二個(gè)是我們自己開發(fā)業(yè)務(wù)使用的設(shè)計(jì)模式。 ????????面試官一般比較關(guān)心的是你在開發(fā)過程中, 有沒有使用過設(shè)計(jì)模式,或者你在簡(jiǎn)歷上寫了關(guān)于設(shè)計(jì)

    2024年02月10日
    瀏覽(29)
  • Java設(shè)計(jì)模式之行為型-責(zé)任鏈模式(UML類圖+案例分析)

    Java設(shè)計(jì)模式之行為型-責(zé)任鏈模式(UML類圖+案例分析)

    目錄 一、基礎(chǔ)概念 二、UML類圖 三、角色設(shè)計(jì) 四、案例分析 4.1、在Java中實(shí)現(xiàn) 4.2、在SpringBoot中實(shí)現(xiàn)? 五、總結(jié)? 責(zé)任鏈模式是一種行為設(shè)計(jì)模式,它允許你將請(qǐng)求沿著處理者鏈進(jìn)行發(fā)送。請(qǐng)求會(huì)被鏈上每個(gè)處理者處理,直到請(qǐng)求被處理完畢。該模式主要解決的是請(qǐng)求的發(fā)送者和

    2024年02月15日
    瀏覽(22)
  • 《設(shè)計(jì)模式》責(zé)任鏈模式

    《設(shè)計(jì)模式》責(zé)任鏈模式

    定義 : 責(zé)任鏈模式將鏈中每一個(gè)節(jié)點(diǎn)都看成一個(gè)對(duì)象,并且將這些節(jié)點(diǎn)對(duì)象連成一條鏈,請(qǐng)求會(huì)沿著這條鏈進(jìn)行傳遞,直到有對(duì)象處理它為止,這使得多個(gè)對(duì)象都有機(jī)會(huì)接收請(qǐng)求,避免了請(qǐng)求發(fā)送者和接收者之間的耦合。 屬于 行為型 設(shè)計(jì)模式。 責(zé)任鏈模式的角色組成 :

    2024年02月13日
    瀏覽(17)
  • 設(shè)計(jì)模式:責(zé)任鏈模式

    責(zé)任鏈模式(Chain of Responsibility Pattern)是一種行為型設(shè)計(jì)模式,它允許多個(gè)對(duì)象按照順序處理請(qǐng)求,直到其中一個(gè)對(duì)象能夠處理該請(qǐng)求為止。責(zé)任鏈模式將請(qǐng)求發(fā)送者和接收者解耦,使得多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,同時(shí)避免了請(qǐng)求發(fā)送者與接收者之間的直接耦合關(guān)系。 在

    2024年02月07日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包