詳解C++設計形式編程中義務鏈形式的運用。本站提示廣大學習愛好者:(詳解C++設計形式編程中義務鏈形式的運用)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C++設計形式編程中義務鏈形式的運用正文
職責鏈形式:使多個對象都無機會處置要求,從而防止要求的發送者和吸收者之間的耦合關系。將這些對象連成一條鏈,並沿著這條鏈傳遞該要求,直到有一個對象處置它為止。
其思惟很簡略,好比斟酌員工請求加薪。公司的治理者一共有三級,總司理、總監、司理,假如一個員工請求加薪,應當向主管的司理請求,假如加薪的數目在司理的權柄內,那末司理可以直接同意,不然將請求上交給總監。總監的處置方法也一樣,總司理可以處置一切要求。這就是典范的職責鏈形式,要求的處置構成了一條鏈,直到有一個對象處置要求。給出這個例子的UML圖。
UML構造圖:
一個義務鏈形式例子
*該例子是三類售貨員處置定單的情形
*假如定單金額小於1000,則一級售貨員可以處置該定單
*假如定單金額小於10000,則二級售貨員可以處置該定單
*假如定單金額小於100000,則三級售貨員可以處置該定單
using System; /**//// <summary> ///售貨員接口,一切類型的售貨員必需完成該接口 /// </summary> interface ISalesMan { string Name {set;get;} //售貨員名字 void SetNext(ISalesMan nextSalesMan); //設置下一級售貨員 void Process(Order order); //處置定單 } /**//// <summary> /// 定單類 /// </summary> class Order { private int orderAmount; public int Amount { set{ this.orderAmount = value;} get{ return this.orderAmount; } } } /**//// <summary> /// 一類售貨員 /// </summary> class FirstSalesMan : ISalesMan { private ISalesMan nextSalesMan = null; private string name = string.Empty; ISalesMan 成員ISalesMan 成員 } /**//// <summary> /// 二類售貨員 /// </summary> class SecondSalesMan : ISalesMan { private ISalesMan nextSalesMan = null; private string name = string.Empty; ISalesMan 成員ISalesMan 成員 } /**//// <summary> /// 三類售貨員 /// </summary> class ThirdSalesMan : ISalesMan { private ISalesMan nextSalesMan = null; private string name = string.Empty; ISalesMan 成員ISalesMan 成員 } class Client { public static void Main(string[] args) { FirstSalesMan first = new FirstSalesMan(); first.Name = "firstMan"; SecondSalesMan second = new SecondSalesMan(); second.Name = "secondMan"; ThirdSalesMan third = new ThirdSalesMan(); third.Name = "thirdMan"; first.SetNext(second); second.SetNext(third); Order o = new Order(); o.Amount = 300; first.Process(o); o = new Order(); o.Amount = 1300; first.Process(o); o = new Order(); o.Amount = 11300; first.Process(o); Console.Read(); } }
義務鏈形式實用場景