国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

責(zé)任鏈模式-對象行為型

Original 2016-11-09 15:56:24 586
abstract:原理在責(zé)任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求。發(fā)出這個請求的客戶端并不知道鏈上的哪一個對象最終處理這個請求,這使得系統(tǒng)可以在不影響客戶端的情況下動態(tài)地重新組織和分配責(zé)任。組成  責(zé)任鏈模式涉及到的角色如下所示:  ●  抽象處理者(Handler)角色:定義出一個處理請求的接口。如果需要,接口可以定義出一個方法以

原理

在責(zé)任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求。發(fā)出這個請求的客戶端并不知道鏈上的哪一個對象最終處理這個請求,這使得系統(tǒng)可以在不影響客戶端的情況下動態(tài)地重新組織和分配責(zé)任。

組成

下載 (3).png


  責(zé)任鏈模式涉及到的角色如下所示:

  ●  抽象處理者(Handler)角色:定義出一個處理請求的接口。如果需要,接口可以定義出一個方法以設(shè)定和返回對下家的引用。這個角色通常由一個Java抽象類或者Java接口實現(xiàn)。上圖中Handler類的聚合關(guān)系給出了具體子類對下家的引用,抽象方法handleRequest()規(guī)范了子類處理請求的操作。

  ●  具體處理者(ConcreteHandler)角色:具體處理者接到請求后,可以選擇將請求處理掉,或者將請求傳給下家。由于具體處理者持有對下家的引用,因此,如果需要,具體處理者可以訪問下家。

純的與不純的責(zé)任鏈模式

  一個純的責(zé)任鏈模式要求一個具體的處理者對象只能在兩個行為中選擇一個:一是承擔(dān)責(zé)任,而是把責(zé)任推給下家。不允許出現(xiàn)某一個具體處理者對象在承擔(dān)了一部分責(zé)任后又把責(zé)任向下傳的情況。

  在一個純的責(zé)任鏈模式里面,一個請求必須被某一個處理者對象所接收;在一個不純的責(zé)任鏈模式里面,一個請求可以最終不被任何接收端對象所接收。

  純的責(zé)任鏈模式的實際例子很難找到,一般看到的例子均是不純的責(zé)任鏈模式的實現(xiàn)。有些人認為不純的責(zé)任鏈根本不是責(zé)任鏈模式,這也許是有道理的。但是在實際的系統(tǒng)里,純的責(zé)任鏈很難找到。如果堅持責(zé)任鏈不純便不是責(zé)任鏈模式,那么責(zé)任鏈模式便不會有太大意義了。


Release Notes

Popular Entries