使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈處理該請求,直到有乙個物件處理它為止。
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;具體管理者1/** * @author: chen
* @description: 管理者
* @date: created in 2018/8/28
* @modified by:
*/public abstract class manager
public void setsupermanager(manager supermanager)
//申請請求
}
package com.chenpt.designmodel.responsibilitymodel;具體管理者2/** * @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 }}
}
package com.chenpt.designmodel.responsibilitymodel;具體管理者3/** * @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 }}
}
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 為請求建立了乙個接收者物件的鏈。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。這種型別的設計模式屬於行為型模式。在這種模式中,通常每個接收者都包含對另乙個接收者的引用。如果乙個物件不能處理該請求,那麼它會...
設計模式之 責任鏈模式
在一些情況下,對乙個訊息 含事件 的響應和處理需要很多物件來參與,這些物件對訊息的處理有前後順序,形成乙個處理鏈條,但物件是否真正處理訊息有賴於在它之前的物件的處理策略,前乙個物件處理後,後乙個物件則不需參與處理,這就是責任鏈模式。現實中有很多類似的場景,比如上訪,上訪一般是從最基層的信訪部門接受信...