責任鏈模式(chain of responsibility pattern)為請求建立了乙個接收者物件的鏈。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦
有多個物件可以處理同乙個請求,具體哪個物件處理該請求由執行時刻自動確定。
舉例:學校經費審批,大於1000的要校長審批,小於1000的要後勤主任審批。傳統做法就是在if else中寫判斷。如果用職責鏈模式來解決。
request:請求任務發起者,這裡就將任務類和業務處理類解耦開。
/**
* 定義乙個任務類
*/public class request
public void setprice(integer price)
public request(integer price)
}/**
* 處理職責的介面
*/ //當前處理者的名字
private string name;
//當前處理者處理業務的方法,交由實現者自己實現
public abstract void handler(request request);
this.name = name;}}
}public string getname()
public void setname(string name)
}/**
* 後勤主任,處理1000以下的申請
*/ public houqing(string name)
public void handler(request request) else
}}/**
* 校長,處理1000以上的申請
*/ public xiaozhang(string name)
public void handler(request request)
}/**
* 測試
*/public class test
}
23種設計模式之責任鏈模式
責任鏈模式 chain of responsibility pattern 為請求建立了乙個接收者物件的鏈。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。這種型別的設計模式屬於行為型模式。在這種模式中,通常每個接收者都包含對另乙個接收者的引用。如果乙個物件不能處理該請求,那麼它會把相同的請...
23種設計模式 13 責任鏈模式
使多個物件都有機會處理請求,從而避免請求的傳送者和接受者質檢的耦合關係。將這個接收物件連成一條鏈,並沿著這條鏈傳遞請求,直到有乙個物件處理他為止。先來看乙個反面例子 使用大量的if判斷來選擇執行邏輯 public response handlerequest request request else...
23種設計模式之責任鏈模式
定義 使多個物件都有機會處理請求,從而避免了請求的傳送者和接受者之間的耦合關係.將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止 通俗的講,就是將對請求的處理組成一條鏈,當請求來時,在鏈中依次傳遞,知道找到能夠處理此請求的物件 其通用類圖如下 責任鏈模式的重點是 在 鏈 上,鏈 由...