責任鏈模式如何在Java項目中使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司專注于中大型企業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)和網(wǎng)站改版、網(wǎng)站營銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開發(fā)的融合,累計客戶近1000家,服務(wù)滿意度達97%。幫助廣大客戶順利對接上互聯(lián)網(wǎng)浪潮,準確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運用,我們將一直專注品牌網(wǎng)站制作和互聯(lián)網(wǎng)程序開發(fā),在前進的路上,與客戶一起成長!
責任鏈模式主要包括以下幾個角色
1、處理者:處理者是一個接口,負責規(guī)定具體處理者處理用戶請求的方法以及具體處理者設(shè)置后繼處理對象的方法
2、具體處理者:具體處理者是實現(xiàn)處理接口的類的實例,具體處理者通過調(diào)用處理接口規(guī)定的方法處理用戶的請求,既在接到用戶的請求后,處理者將調(diào)用接口規(guī)定的方法,在執(zhí)行該方法的過程中,如果發(fā)現(xiàn)能處理用戶的請求,就處理用戶的請求。如果發(fā)現(xiàn)處理不了就交給下一個處理者進行處理。
例如一個圖書檢索的程序,根據(jù)圖書類別將圖書分為了N個種類,然后創(chuàng)建若干個種類的對象,每個對象對一個種類進行檢索。為了能更好的管理這些對象,可以將這額對象組織成一個責任鏈,當用戶需要鑒定書籍時,系統(tǒng)可以讓責任鏈上的第一個對象來處理用戶的請求,這個對象首先檢索自己是否能夠處理用戶的請求,如果能處理就反饋并返回處理內(nèi)容。如果不能處理則交給下一個處理對象進行處理。
package org.zhy.design.demo;
/**
* 處理接口
* @author zhengyi
*
*/
public interface Handler {
//根據(jù)書的ID進行檢索
public abstract void Search(int id);
//下一個處理者 參數(shù)為實現(xiàn)處理接口的實現(xiàn)類
public abstract void nextHandler(Handler han);
}package org.zhy.design.demo;
import java.util.ArrayList;
import java.util.List;
/**
* 文學類的書籍檢索
* @author zhengyi
*
*/
public class WenXue implements Handler{
private Handler han;//下一個處理者
private List<Integer> list; //模擬文學類書籍的編號
public WenXue(){
list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
}
@Override
public void nextHandler(Handler han) {
this.han=han; //給下一個處理者賦值
}
@Override
public void Search(int id) {
if(list.contains(id)){ //檢索list中是否存在此ID的書籍,如果存在則打印
System.out.println("恭喜您,您檢索的書籍是文學類的");
}else{ //如果沒有此書籍則交給下一個處理者進行處理
if(han!=null){
han.Search(id);
}
}
}
}package org.zhy.design.demo;
import java.util.ArrayList;
import java.util.List;
/**
* 計算機類的書籍
* @author zhengyi
*
*/
public class JiSuanJi implements Handler {
private Handler han;
private List<Integer> list;
public JiSuanJi(){
list=new ArrayList<Integer>();
list.add(6);
list.add(7);
list.add(8);
list.add(9);
list.add(10);
}
@Override
public void nextHandler(Handler han) {
this.han=han;
}
@Override
public void Search(int id) {
if(list.contains(id)){
System.out.println("恭喜你,此書記在計算機類");
}else{
if(han!=null){
han.Search(id);
}
}
}
}package org.zhy.design.demo;
public class Appliction {
private Handler jisuanji,wenxue;
public void createHandler(){
jisuanji=new JiSuanJi();
wenxue=new WenXue();
jisuanji.nextHandler(wenxue); //指定下一個處理者
}
public void search(int id){
jisuanji.Search(id); //第一個處理者進行篩選處理
}
public static void main(String[] args) {
Appliction app=new Appliction();
app.createHandler();
app.search(10);
}
}適合使用責任鏈模式的情況
1、在許多對象可以處理用戶請求的時候
2、希望用戶不必明確處理者的時候,同時向多個處理者發(fā)送請求
3、程序希望動態(tài)的訂制可處理用戶請求的集合對象
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
文章題目:責任鏈模式如何在Java項目中使用
網(wǎng)頁鏈接:http://chinadenli.net/article16/gogdgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導航、響應(yīng)式網(wǎng)站、App設(shè)計、做網(wǎng)站、、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)