設計模式 行為型 責任鏈模式

2021-08-30 22:21:44 字數 1031 閱讀 4534

從擊鼓傳花談起

擊鼓傳花是一種熱鬧而又緊張的飲酒遊戲。在酒宴上賓客依次坐定位置,由一人擊鼓,擊鼓的地方與傳花的地方是分開的,以示公正。開始擊鼓時,花束就開始依次傳遞,鼓聲一落,假如花束在某人手中,則該人就得飲酒。

擊鼓傳花的類圖結構如下:

如果用乙個物件系統描述賈府,那麼賈母、賈赦、賈政、賈寶玉和賈環等等就應當分別由乙個個具體類代表,而這場擊鼓傳花遊戲的類圖,按照責任鏈模式,應當如下圖所示:

責任鏈模式的靜態類結構可見下圖:

抽象處理者的示意性源**:

public class handler

// write your code here

}public void setsuccessor(handler successor)

public handler getsuccessor()

private handler successor;

}

具體處理者的示意性源**:

public class concretehandler extends handler

if (successor != null)

// write your code here }}

客戶端的源**如下:

public class client 

}

純的與不純的責任鏈模式乙個純的責任鏈模式要求乙個具體的處理者物件只能在兩個行為中選擇乙個:一是承擔責任,二是把責任推給下家。不允許出現某乙個具體處理者物件在承擔了一部分責任後又把責任向下傳的情況。

在乙個純的責任鏈模式裡面,乙個請求必須被某乙個處理者物件所接受;在乙個不純的責任鏈模式裡面,乙個請求可以最終不被任何接受端物件所接受。

純的責任鏈模式的實際例子很難找到,一般看到的例子均是不純的責任鏈模式的實現。有些人認為不純的責任鏈根本不是責任鏈模式,這也許是有道理的;但是在實際的系統裡,純的責任鏈很難找到;如果堅持責任鏈不純便不是責任鏈模式,那麼責任鏈模式

設計模式 行為型 責任鏈模式

責任鏈 chain of responsibility 模式為請求建立了乙個接收者物件的鏈。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。這種型別的設計模式屬於行為型模式。使用場景 乙個請求物件需要多種任務的處理,通過鏈式傳播物件的場景。優點1.職責鏈對於客戶請求是透明的 2.鏈 將請求的...

行為型設計模式之責任鏈模式

責任鏈模式是一種鏈式結構,就是由乙個個節點首尾相接串起來的結構,具有很好的靈活性,將每乙個節點看作是乙個物件,每乙個物件擁有不同的處理邏輯,將乙個請求從鏈式的首端發出,沿著鏈的路徑依此傳遞每乙個節點物件,直到有物件處理這個請求為止,我們將這樣一種模式稱為責任鏈模式。使多個物件都有機會處理請求,從而避...

JAVA設計模式(行為型) 責任鏈模式

避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些物件連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止 public class chainofresponsibility main support support 1 newdemo1 support support s...