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

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

這篇具有很好參考價值的文章主要介紹了Java設(shè)計模式—責任鏈模式(Chin of Responsibility)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言

一、責任鏈模式的簡介

二、責任鏈模式的概念

三、責任鏈模式的作用

四、責任鏈模式的優(yōu)、缺點

1.責任鏈模式的優(yōu)點

2.責任鏈模式的缺點

五、責任鏈模式的應用場景

六、代碼案例

UML類圖

?1.定義一個請求枚舉類

?2.定義一個請求類

3.定義一個抽象處理接口

4、定義具體處理類

5.Main代碼測試

總結(jié)


前言

使用責任鏈模式,它可以動態(tài)地添加或刪除處理器,從而改變處理請求的順序和方式。同時,責任鏈模式也可以減少對象之間的耦合度,提高代碼的可擴展性和可維護性。


一、責任鏈模式的簡介

責任鏈模式(Chin of Responsibility)是一種行為型設(shè)計模式,它通過將請求的發(fā)送者和接收者解耦來實現(xiàn)請求的處理。


二、責任鏈模式的概念

責任鏈模式(Chin of Responsibility):使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接受者之間的耦合關(guān)系。將這個對象連成一條鏈子,并沿著這條鏈傳遞該請求,直到有一對象處理到它為止。


三、責任鏈模式的作用

責任鏈模式(Chin of Responsibility)的作用是將請求的發(fā)送者和接收者解耦,使多個對象都有機會處理該請求。它將這些對象連接成一條鏈,并沿著鏈傳遞請求,直到有一個對象處理它為止。

責任鏈模式的主要作用包括以下:

  1. 降低系統(tǒng)的耦合度
  2. 增強系統(tǒng)的靈活性
  3. 提高代碼的可擴展性
  4. 提高代碼的可維護性

四、責任鏈模式的優(yōu)、缺點

1.責任鏈模式的優(yōu)點

  1. 降低系統(tǒng)的耦合度:請求發(fā)送者和接收者之間不直接交互,而是通過責任鏈上的多個對象進行交互,從而降低了它們之間的耦合度。
  2. 增強系統(tǒng)的靈活性:可以動態(tài)地增加或刪除處理器,從而改變請求的處理順序和方式。
  3. 提高代碼的可擴展性:因為每個處理器都只負責處理自己能夠處理的請求,所以可以方便地添加新的處理器來處理新的請求類型。
  4. 提高代碼的可維護性:因為每個處理器都只負責處理自己能夠處理的請求,所以可以方便地添加新的處理器來處理新的請求類型。

2.責任鏈模式的缺點

  1. 請求可能沒有被處理:如果沒有任何一個處理器能夠處理該請求,則該請求將被忽略。
  2. 系統(tǒng)性能可能受影響:由于責任鏈中可能包含大量的處理器,因此可能會影響系統(tǒng)的性能。

五、責任鏈模式的應用場景

責任鏈的使用場景有以下幾點:

  1. 處理請求需要多個對象協(xié)作,且不確定哪個對象能夠處理請求。
  2. 需要動態(tài)指定能夠處理請求的對象集合。
  3. 需要在不明確接收者的情況下,向多個對象中的一個或多個發(fā)送請求。
  4. 可以通過在運行時添加或刪除處理器來改變請求處理的順序。
  5. 當一個請求需要被多個對象進行處理時,可以使用責任鏈模式避免產(chǎn)生復雜的嵌套調(diào)用。
  6. 可以將責任鏈模式與其他設(shè)計模式結(jié)合使用,如裝飾器模式、工廠模式等,以實現(xiàn)更加靈活的功能。

六、代碼案例

UML類圖

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

?1.定義一個請求枚舉類

RequestType請求枚舉

/***
 * 定義請求枚舉
 */
public enum RequestType {
    TYPE_A, TYPE_B, TYPE_C
}

?2.定義一個請求類

Request請求類

/***
 * 定義請求類
 */
public class Request {
    private String name;
    private RequestType type;

    public Request(String name, RequestType type) {
        this.name = name;
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public RequestType getType() {
        return type;
    }
}

3.定義一個抽象處理接口

定義一個抽象處理器(Handler)類,其中包含一個指向下一個處理器的引用,并定義一個處理請求的方法。

Handler抽象類

/***
 * 定義一個抽象處理器(Handler)類,其中包含一個指向下一個處理器的引用,并定義一個處理請求的方法。
 */
public abstract class Handler {
    protected Handler successor;

    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }

    public abstract void handleRequest(Request request);
}

4、定義具體處理類

ConcreteHandlerA類

/***
 * 定義具體處理類
 */
public class ConcreteHandlerA extends Handler {

    @Override
    public void handleRequest(Request request) {
        if (request.getType().equals(RequestType.TYPE_A)) {
            System.out.println("ConcreteHandlerA處理請求" +request.getName());
        } else if (successor != null) {
            successor.handleRequest(request);
        }
    }
}

ConcreteHandlerB類

/***
 * 定義具體處理類
 */
public class ConcreteHandlerB extends Handler {

    @Override
    public void handleRequest(Request request) {
        if (request.getType().equals(RequestType.TYPE_B)) {
            System.out.println("ConcreteHandlerB處理請求" + request.getName());
        } else if (successor != null) {
            successor.handleRequest(request);
        }
    }

ConcreteHandlerC類

/***
 * 定義具體處理類
 */
public class ConcreteHandlerC extends Handler {

    @Override
    public void handleRequest(Request request) {
        if (request.getType().equals(RequestType.TYPE_C)) {
            System.out.println("ConcreteHandlerC處理請求" + request.getName());
        } else if (successor != null) {
            successor.handleRequest(request);
        }
    }
}

5.Main代碼測試

 public static void main(String[] args) {
        Handler handlerA = new ConcreteHandlerA();
        Handler handlerB = new ConcreteHandlerB();
        Handler handlerC = new ConcreteHandlerC();

        handlerA.setSuccessor(handlerB);
        handlerB.setSuccessor(handlerC);

        Request request1 = new Request("已處理 1", RequestType.TYPE_A);
        Request request2 = new Request("已處理 2", RequestType.TYPE_B);
        Request request3 = new Request("已處理 3", RequestType.TYPE_C);

        handlerA.handleRequest(request1);
        handlerA.handleRequest(request2);
        handlerA.handleRequest(request3);
    }

輸出結(jié)果:

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

?


總結(jié)

這個示例中,具體處理器類實現(xiàn)了抽象處理器接口,并根據(jù)自己的能力來判斷是否能夠處理請求。如果不能處理,則將請求傳遞給下一個處理器。客戶端創(chuàng)建責任鏈并將請求發(fā)送給第一個處理器,處理器依次處理請求,直到有一個處理器能夠處理它為止。文章來源地址http://www.zghlxwxcb.cn/news/detail-480470.html

到了這里,關(guān)于Java設(shè)計模式—責任鏈模式(Chin of Responsibility)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 【設(shè)計模式-05】Facade門面Mediator調(diào)停者 | Decorator裝飾器 | Chain Of Responsibility責任鏈

    【設(shè)計模式-05】Facade門面Mediator調(diào)停者 | Decorator裝飾器 | Chain Of Responsibility責任鏈

    一般是系統(tǒng)內(nèi)部相互交錯,比如 消息中間件(MQ) 就是這種設(shè)計模式,對各個功能或系統(tǒng)之間進行解耦。 業(yè)務場景:論壇或者博客發(fā)表帖子或者評論,對敏感詞過濾處理。使用責任鏈的模式進行過濾處理。 把變化的進行封裝處理 核心代碼實現(xiàn) GitHub - jxaufang168/Design-Patterns: 設(shè)計

    2024年01月19日
    瀏覽(63)
  • 設(shè)計模式—職責鏈模式(Chain of Responsibility)

    設(shè)計模式—職責鏈模式(Chain of Responsibility)

    目錄 思維導圖 什么是職責鏈模式? 有什么優(yōu)點呢? 有什么缺點呢? 什么場景使用呢? 代碼展示 ①、職責鏈模式 ②、加薪代碼重構(gòu) 使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系。將這個對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有

    2024年02月10日
    瀏覽(37)
  • 設(shè)計模式--職責鏈模式(Chain of Responsibility Pattern)

    職責鏈模式(Chain of Responsibility Pattern)是一種行為設(shè)計模式,它為請求創(chuàng)建了一個接收者對象的鏈。 這種模式給予請求的類型,對請求的發(fā)送者和接收者進行解耦。這種類型的設(shè)計模式屬于行為型模式。 在職責鏈模式中,通常每個接收者都包含對另一個接收者的引用。如果

    2024年02月20日
    瀏覽(21)
  • 責任鏈模式(Chain of Responsibility)

    責任鏈模式(Chain of Responsibility)

    命令鏈(Chain of Command)。 責任鏈是一種行為設(shè)計模式 , 允許你將請求沿著處理者鏈進行發(fā)送。收到請求后,每個處理者均可對請求進行處理,或?qū)⑵鋫鬟f給鏈上的下個處理者 。 1. 問題 假如你正在開發(fā)一個在線訂購系統(tǒng)。你希望對系統(tǒng)訪問進行限制, 只允許認證用戶創(chuàng)建

    2024年02月11日
    瀏覽(24)
  • 責任鏈模式(Chain of Responsibility)

    責任鏈模式是對象的行為模式。使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接受者直接的耦合關(guān)系。

    2024年02月05日
    瀏覽(29)
  • Java設(shè)計模式——責任鏈模式

    當一個請求需要在多個對象之間傳遞,每個對象都可能處理該請求或?qū)⑵鋫鬟f給下一個對象。在這種情況下,需要避免將發(fā)送者與接收者之間的耦合,以及確定請求的處理方式。此時可使用責任鏈模式,它的優(yōu)點有降低耦合度(無需關(guān)心哪個對象會處理請求),靈活性(可以

    2024年02月21日
    瀏覽(19)
  • Java設(shè)計模式-責任鏈模式

    責任鏈模式,有的地方也會叫職責鏈模式。它指的是,為請求者和被請求者之間創(chuàng)建一條對象處理鏈路,避免請求發(fā)送者與接受者耦合在一起。 在責任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個對象決定

    2024年02月15日
    瀏覽(23)
  • java設(shè)計模式(十五)責任鏈模式

    java設(shè)計模式(十五)責任鏈模式

    責任鏈模式(Chain of Responsibility) 使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接受者之間的耦合關(guān)系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有對象能夠處理它。 抽象處理類: 主要包含一個指向下一處理類的成員變量 nextHandler 和一個處理請求的方

    2024年02月08日
    瀏覽(22)
  • 設(shè)計模式之責任鏈模式【Java實現(xiàn)】

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

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

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

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

    2024年01月24日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包