行為型設計模式 職責鏈模式詳解

2022-03-11 12:58:12 字數 1372 閱讀 9699

職責鏈模式(chain of responsibilities pattern)允許你將請求沿著處理者鏈進行傳送,處理者收到請求後,可以對請求進行處理,或者將其傳遞給下乙個處理者。

handler(抽象處理者):定義乙個處理請求的介面,並且聚合了乙個型別為自身的物件(後繼者),子類可以通過設定後繼者,將請求傳遞下去

concretehandler(具體處理者):具體處理者收到請求後,可以自己將請求處理,或者傳給後繼者。

request(請求):定義一些屬性,表示乙個請求

公司採購審批流程:

請求,包含 id 和 **字段

public class purchaserequest 

public int getid()

public float getprice()

}

抽象處理者

protected string name;

this.name = name;}}

/*** 處理請求

* @param request

*/public abstract void processrequest(purchaserequest request);

}具體處理者

public teamleader(string name)

@override

public void processrequest(purchaserequest request) else

}} public manager(string name)

@override

public void processrequest(purchaserequest request) else

}} public boss(string name)

@override

public void processrequest(purchaserequest request) else

}}測試類

public class client 

}

執行結果

李組長審批了1號請求,**為5000.0

李組長審批了1號請求,**為5000.0

優點缺點適用場景

行為型 職責鏈模式

定義 將請求的傳送和接收解耦,讓多個接收物件都有機會處理這個請求。將這些接收物件串成一條鏈,並沿著這條鏈傳遞這個請求,直到鏈上的某個接收物件能夠處理它為止。在職責鏈模式中,多個處理器依次處理同乙個請求。乙個請求先經過 a 處理器處理,然後再把請求傳遞給 b 處理器,b 處理器處理完後再傳遞給 c 處...

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

採購單 請求類 class purchaserequest public void setamount double amount public double getamount public void setnumber int number public int getnumber public...

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

從擊鼓傳花談起 擊鼓傳花是一種熱鬧而又緊張的飲酒遊戲。在酒宴上賓客依次坐定位置,由一人擊鼓,擊鼓的地方與傳花的地方是分開的,以示公正。開始擊鼓時,花束就開始依次傳遞,鼓聲一落,假如花束在某人手中,則該人就得飲酒。擊鼓傳花的類圖結構如下 如果用乙個物件系統描述賈府,那麼賈母 賈赦 賈政 賈寶玉和賈環等...