程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 詳解C++設計形式編程中義務鏈形式的運用

詳解C++設計形式編程中義務鏈形式的運用

編輯:關於C++

詳解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(); 
  } 
} 

義務鏈形式實用場景

  • 有多個的對象可以處置一個要求,哪一個對象處置該要求運轉時辰主動肯定。
  • 你想在不明白指定吸收者的情形下,向多個對象中的一個提交一個要求。
  • 可處置一個要求的對象聚集應主動態指定。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved