設計模式之責任鏈模式

2021-09-05 09:06:35 字數 1138 閱讀 4829

責任鏈模式資料23種設計模式中的行為型模式,他是使多個物件都有機會處理同乙個請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。

場景:乙個員工報銷,需要層層審批,初級領導只能報銷500元以內的,中級領導能報銷2000以內的,大領導能報銷5000以內的,再大的需要找大boss進行報銷了,這種情況就可以使用責任鏈模式進行設計。

abstract class leader  else 

}protected abstract int limitmoney();

protected abstract void dohandler();

}

1、初級領導

class lowleader extends leader 

@override

protected void dohandler()

}

2、中級領導

class middleleader extends leader

@override

protected void dohandler()

}

3、高階領導

class heightleader extends leader 

@override

protected void dohandler()

}

4、大領導

class boss extends leader 

@override

protected void dohandler()

}

class test 

}

責任鏈模式除了能夠設定好的順序進行請求之外,還能夠進行越級請求,這種請求成為不純的責任鏈,在實際應用中遇見的絕大多數資料不純的責任鏈模式。

優點:分離職責,動態組合。每個請求者只負責自己的部分,實現了請求者與處理者**分離,可以對請求者和處理者進行解耦,提高**靈活性。

缺點:會產生大量的細粒度職責物件。其次責任鏈太長或者每條鏈判斷處理的時間太長會影響效能,特別是遞迴迴圈的時候。

設計模式之 責任鏈模式

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

設計模式之(責任鏈模式)

chain of responsibleity 責任鏈模式 在責任鏈模式 中,很多物件由每乙個物件對其下家的引用而接。起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。客戶並不知道鏈上的哪乙個物件最終處理這個請求,系統可以在不影響客戶端的情況下動態的重新組織鏈和分配責任。處理者...

設計模式之責任鏈模式

假設現在乙個公司的請假流程如下 一天及以下由小組組長審批,一天以上三天以下由經理審批,三天以上七天以下由老闆審批,七天以上直接勸退。如果每次請假時都很長的if else 來判斷該去找誰請假,很不容易擴充套件,我們使用責任鏈模式來實現。首先,是乙個抽象的父類 public abstract class...