概念:
責任鏈模式又叫做職責鏈模式,是屬于行為型的一種,
責任鏈模式分為兩種:
第一種像工廠流水線,目的就讓每一個環節都進行處理,
第二種像層層審批,如果其中一個物件無法處理,呼叫下一個物件來進行處理,如果一旦能處理,鏈式就此停止,以此類推,第二種為了程式的健壯性,至少得需要一個兜底的模塊,防止穿透責任鏈,
適用場景:
對請求引數進行逐層過濾,用于框架的中間件的開發場景(Laravel Middleware),日志框架,每個鏈元素自主決定如何處理日志訊息,
優點:
簡化了呼叫端的操作,呼叫端無須關心請求的處理細節和請求的傳遞程序,因為請求會自動進行傳遞到整條鏈路,
缺點:
期間實體化的很多的物件,其實完全可以用普通的if去替代,
除錯不方便,
//責任鏈模式好像沒有固定的實作方案,只是一種思想,所以實作一個展示活躍型別的的功能,這種方式方便呼叫端處理,但是依賴在類的內部,不利于后期維護,
//也可以優化呼叫和實體化在類的外部進行,缺點是會增加呼叫端的復雜度,有點是可控度更高,到底如何實作這要看應用場景,但是鏈式的思想是一致的,
class shortTerm {
private function next($time) {
return (new OneDay())->show($time);
}
public function show($time) {
if($time <= 3) {
return '剛付訓躍';
}
return $this->next($time);
}
}
class OneDay {
private function next($time) {
return (new ThreeDay())->show($time);
}
public function show($time) {
if($time <= 24) {
return '當天活躍';
}
return $this->next($time);
}
}
class ThreeDay {
private function next($time) {
return (new SevenDay())->show($time);
}
public function show($time) {
if($time <= 72) {
return '三日內活躍';
}
return $this->next($time);
}
}
class SevenDay {
public function show($time) {
return '不活躍';
}
}
//呼叫端
echo (new shortTerm())->show(600);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/523165.html
標籤:其他
上一篇:小米開放平臺逆向工程
