欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2022年08月27日 11:09:07   作者:niuyongzhi  
責(zé)任鏈模式是一種行為設(shè)計(jì)模式,允許你將請求沿著處理鏈發(fā)送,然后處理者都可對其進(jìn)行處理,完成后可以再將其傳遞給下一個(gè)處理者。下面將會舉例說明什么是責(zé)任鏈模式,責(zé)任鏈模式該如何使用

1.什么是責(zé)任鏈模式

當(dāng)一個(gè)請求可能需要多個(gè)對象中的某個(gè)進(jìn)行處理時(shí),將這些對象連成一條鏈,并沿者這條鏈傳遞該請求,知道有一個(gè)對象處理它為止。這樣的情況或需求時(shí),可以采用責(zé)任鏈模式。

2.如何實(shí)現(xiàn)

1)處理者接口(Handler),負(fù)責(zé)定義處理請求的抽象方法,并設(shè)置下一個(gè)處理著的方法。

2)具體處理者,實(shí)現(xiàn)Handler接口中定義的方法。實(shí)現(xiàn)處理用戶請求的邏輯,并設(shè)置下一個(gè)處理請求的對象。如果能夠處理用戶求情就處理,如果不能處理,交給下一個(gè)對象進(jìn)行處理。

3)封裝類。對以上的具體處理者進(jìn)行封裝,使它們形成一個(gè)處理鏈條。

3.代碼實(shí)現(xiàn)

以一個(gè)資金審批舉例

1)處理者接口

/**
 * 處理者接口
 * 定義處理請求的方法
 * 設(shè)置下一個(gè)處理者
 */
public interface Handler {
    public void handleRequest(int money);
    public void setNextHandler(Handler handler);
}

2)處理者1

/**
 * 具體處理者--經(jīng)理
 */
public class Manager implements Handler {
    Handler handler;
    @Override
    public boolean handleRequest(int money) {
        boolean result = false;
        if(money<1000){
           System.out.println("同意");
            result = true;
        }else{
            //超出處理范圍,交給下一個(gè)處理著
            if(handler!=null){
             result =  handler.handleRequest(money);
            }
        }
        return  result;
    }
    @Override
    public void setNextHandler(Handler handler) {
        this.handler = handler;
    }
}

3)處理著2

/**
 * 具體處理者--總經(jīng)理
 */
public class GeneralManager implements Handler {
    Handler handler;
    @Override
    public boolean handleRequest(int money) {
        boolean result = false;
        if(money<10000){
            System.out.println("同意");
            result = true;
        }else{
            //超出處理范圍,交給下一個(gè)處理著
            if(handler!=null){
                result =  handler.handleRequest(money);
            }
        }
        return  result;
    }
    @Override
    public void setNextHandler(Handler handler) {
        this.handler = handler;
    }
}

4)封裝類

/**
 * 封裝類
 * 將所有的具體處理者封裝成一條處理鏈
 */
public class Contxt {
    private Handler handler1,handler2;
    public Contxt(){
    }
    public void createHandlerChain(){
        handler1 = new Manager();
        handler2 = new GeneralManager();
        handler1.setNextHandler(handler2);
    }
    public void responseRequest(int request){
        handler1.handleRequest(request);
    }
}

5)測試類

public class TestMain {
    public static void main(String args []){
        int meney = 500;
        Contxt context = new Contxt();
        //創(chuàng)建處理鏈
        context.createHandlerChain();
        //相應(yīng)請求
        boolean result = context.responseRequest(meney);
        System.out.println(result);
    }
}

4.總結(jié)

責(zé)任鏈模式的優(yōu)點(diǎn)

1)責(zé)任鏈中的對象只和自己的后繼是低耦合關(guān)系,和其他對象毫無關(guān)聯(lián),是程序更加的靈活。

2)程序可以動態(tài)的增加、刪除處理者的關(guān)系,或重新委派新的處理者

到此這篇關(guān)于Java實(shí)現(xiàn)設(shè)計(jì)模式之責(zé)任鏈模式的文章就介紹到這了,更多相關(guān)Java責(zé)任鏈模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java編程異常簡單代碼示例

    Java編程異常簡單代碼示例

    這篇文章主要介紹了Java編程異常簡單代碼示例,還是比較不錯的,這里分享個(gè)大家,需要的朋友可以參考下。
    2017-11-11
  • jfinal中stateless模式嵌入shiro驗(yàn)證的實(shí)現(xiàn)方式

    jfinal中stateless模式嵌入shiro驗(yàn)證的實(shí)現(xiàn)方式

    這篇文章主要介紹了jfinal中stateless模式嵌入shiro驗(yàn)證,今天,我們就來嘗試一種通過攔截器來實(shí)現(xiàn)的Stateless Jfinal嵌入方式,需要的朋友可以參考下
    2022-06-06
  • Java匿名內(nèi)部類的寫法示例

    Java匿名內(nèi)部類的寫法示例

    這篇文章主要給大家介紹了關(guān)于Java匿名內(nèi)部類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Mybatis-Plus如何使用分頁實(shí)例詳解

    Mybatis-Plus如何使用分頁實(shí)例詳解

    最近在研究mybatis,然后就去找簡化mybatis開發(fā)的工具,下面這篇文章主要給大家介紹了關(guān)于Mybatis-Plus如何使用分頁的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • WebSocket實(shí)現(xiàn)聊天室業(yè)務(wù)

    WebSocket實(shí)現(xiàn)聊天室業(yè)務(wù)

    這篇文章主要為大家詳細(xì)介紹了WebSocket實(shí)現(xiàn)聊天室業(yè)務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • openFeign服務(wù)之間調(diào)用保持請求頭信息處理方式

    openFeign服務(wù)之間調(diào)用保持請求頭信息處理方式

    這篇文章主要介紹了openFeign服務(wù)之間調(diào)用保持請求頭信息處理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java基礎(chǔ)類之ArrayUtils工具類詳解

    Java基礎(chǔ)類之ArrayUtils工具類詳解

    這篇文章主要介紹了java.ArrayDeque類使用方法,java.ArrayDeque類提供了可調(diào)整大小的陣列,并實(shí)現(xiàn)了Deque接口,感興趣的小伙伴們可以參考一下
    2021-09-09
  • web 容器的設(shè)計(jì)如何實(shí)現(xiàn)

    web 容器的設(shè)計(jì)如何實(shí)現(xiàn)

    這篇文章主要介紹了web 容器的設(shè)計(jì)如何實(shí)現(xiàn)的相關(guān)資料,本文旨在介紹如何設(shè)計(jì)一個(gè)web容器,只探討實(shí)現(xiàn)的思路,并不涉及過多的具體實(shí)現(xiàn)。把它分解劃分成若干模塊和組件,每個(gè)組件模塊負(fù)責(zé)不同的功能,需要的朋友可以參考下
    2016-12-12
  • Java 中Object的wait() notify() notifyAll()方法使用

    Java 中Object的wait() notify() notifyAll()方法使用

    這篇文章主要介紹了Java 中Object的wait() notify() notifyAll()方法使用的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java通過python命令執(zhí)行DataX任務(wù)的實(shí)例

    Java通過python命令執(zhí)行DataX任務(wù)的實(shí)例

    今天小編就為大家分享一篇Java通過python命令執(zhí)行DataX任務(wù)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論