大話設計模式之責任鏈模式

2022-07-11 05:42:11 字數 2759 閱讀 3865

使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈處理該請求,直到有乙個物件處理它為止。

1、降低耦合度。它將請求的傳送者和接收者解耦。

2、簡化了物件。使得物件不需要知道鏈的結構。

3、增強給物件指派職責的靈活性。通過改變鏈內的成員或者調動它們的次序,允許動態地新增或者刪除責任。 4、增加新的請求處理類很方便。

1、不能保證請求一定被接收。

2、系統效能將受到一定影響,而且在進行**除錯時不太方便,可能會造成迴圈呼叫。

3、可能不容易觀察執行時的特徵,有礙於除錯。

1、有多個物件可以處理同乙個請求,具體哪個物件處理該請求由執行時刻自動確定。

2、在不明確指定接收者的情況下,向多個物件中的乙個提交乙個請求。 3、可動態指定一組物件處理請求。

待處理類

package com.chenpt.designmodel.responsibilitymodel;

/** * @author: chen

* @description:待處理請求

* @date: created in 2018/8/28

* @modified by:

*/public class request

public void setrequesttype(string requesttype)

public string getrequestcontent()

public void setrequestcontent(string requestcontent)

public int getnumbers()

public void setnumbers(int numbers)

}

管理者

package com.chenpt.designmodel.responsibilitymodel;

/** * @author: chen

* @description: 管理者

* @date: created in 2018/8/28

* @modified by:

*/public abstract class manager

public void setsupermanager(manager supermanager)

//申請請求

}

具體管理者1

package com.chenpt.designmodel.responsibilitymodel;

/** * @author: chen

* @description: 經理

* @date: created in 2018/8/28

* @modified by:

*/public class commonmanager extends manager

@override

if(request.getrequesttype().equals("請假") && request.getnumbers()<=2)else }}

}

具體管理者2

package com.chenpt.designmodel.responsibilitymodel;

/** * @author: chen

* @description: 總監

* @date: created in 2018/8/28

* @modified by:

*/public class majormanager extends manager

@override

if(request.getrequesttype().equals("請假") && request.getnumbers()<=5)else }}

}

具體管理者3

package com.chenpt.designmodel.responsibilitymodel;

/** * @author: chen

* @description: 總經理

* @date: created in 2018/8/28

* @modified by:

*/public class generalmanager extends manager

@override

if(request.getrequesttype().equals("請假"))else if(request.getrequesttype().equals("加薪") && request.getnumbers()<=500)else if(request.getrequesttype().equals("加薪") && request.getnumbers()>500)}}

客戶端

package com.chenpt.designmodel.responsibilitymodel;

/** * @author: chen

* @description:

* @date: created in 2018/8/28

* @modified by:

*/public class maintest

}//執行結果

經理回覆:已批准小菜請假

總監回覆:已批准小菜請假

總經理回覆:加薪已批准小菜要加薪

總經理回覆:加薪 回頭再說吧

大話設計模式 責任鏈模式

china of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。像這種情況在我們身邊隨處可見,比如,班裡想申請乙個教室舉辦元旦晚會,文藝委員不能自作主張使用某個教室,於是找...

大話設計模式 責任鏈模式

顧名思義,責任鏈模式 chain of responsibility pattern 為請求建立了乙個接收者物件的鏈。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。這種型別的設計模式屬於行為型模式。在這種模式中,通常每個接收者都包含對另乙個接收者的引用。如果乙個物件不能處理該請求,那麼它會...

設計模式之 責任鏈模式

在一些情況下,對乙個訊息 含事件 的響應和處理需要很多物件來參與,這些物件對訊息的處理有前後順序,形成乙個處理鏈條,但物件是否真正處理訊息有賴於在它之前的物件的處理策略,前乙個物件處理後,後乙個物件則不需參與處理,這就是責任鏈模式。現實中有很多類似的場景,比如上訪,上訪一般是從最基層的信訪部門接受信...