第49章

大B:“首先,鏈結構的由來值得指出的是,責任鏈模式並不創建出責任鏈。責任鏈的創建必須有係統的其它部分完成。責任鏈模式降低了請求的發送端和接收端之間的耦合,使多個對象都有機會處理這個請求。一個鏈可以是一條線,一個樹,也可以是一個環。鏈的拓撲結構可以是單連通的或多連通的,責任鏈模式並不指定責任鏈的拓撲結構。但是責任鏈模式要求在同一個時間裏,命令隻可以被傳給一個下家(或被處理掉);而不可以傳給多於一個下家。”

在下麵的責任鏈是係統已有的樹結構的一部分,責任鏈是一個樹結構的一部分。圖中有陰影的對象給出了一個可能的命令傳播路徑。

B:“責任鏈的成員往往是一個更大的結構的一部分。 比如我們剛才說的《紅樓夢》中擊鼓傳花的遊戲中,所有的成員都是賈府的成員。如果責任鏈的成員不存在,那麽為了使用責任鏈模式,就必須創建它們;責任鏈的具體處理者對象可以是同一個具體處理者類的實例。在Java的1.0版的AWT事件處理模型裏,責任鏈便是視窗上的部件的容器等級結構。”