黑馬程序員----銀行業務調度系統筆記

 ---------------------- android培訓java培訓、期待與您交流! ----------------------

銀行業務調度系統:

需求分析:

1:銀行內有六個業務窗口,1—4號窗口爲普通窗口,5號窗口爲快速窗口,6號窗口爲VIP窗口

2:有三種對應類型的客戶:vip客戶、普通客戶、快速客戶(辦理如交水電費。電話費之類業務的客戶)

3:異步隨機生成各種類型的客戶,生成各種類型用戶的概率爲:

VIP客戶:普通客戶: 快速客戶 =  1  :  6  :  3

4:客戶辦理業務所需的時間有最大值和最小值,在該範圍內隨機設定每個VIP客戶以及普通客戶辦理業務所需的時間,快速客戶辦理業務所需時間爲最小值(提示:辦理業務的過程可通過線程Sleep的方式模擬。)

5:各個類型客戶在其對應窗口按順序依次辦理業務。

6:當VIP(6號)窗口和快速業務(5號)窗口沒有客戶等待辦理業務的時候,這兩個窗口可以處理普通客戶的業務,而一旦有對應的客戶等待辦理業務的時候,則優先處理對應客戶的業務。

7:隨機生成客戶時間間隔以及業務辦理時間最大值和最小值,可以設置。

8:不要求是實現GUI,只考慮系統邏輯實現,可通過log方式展現程序運行結果。

 

面向對象設計:

1:客戶對應由取號機器產生的號碼,因爲有三種客戶並且彼此獨立,因此應該有三個號碼管理器,並且它們用多線程實現,相互獨立。而現實中銀行只有一個號碼機器,這三個號碼管理器對象有一個號碼機器管理,並且整個系統中只能有一個號碼機器,因此要設計成單例。

2:窗口依次叫號,即服務窗口每次找號碼管理器獲取當前要被服務的號碼

 

注意:

1:關於NumberManager中的generateManager()和fetchService()必須爲同步方法,由於generateManager()爲客戶來的時候調用,fetchService()爲窗口調用,內部都有號碼成員變量的訪問,因此必須要同步。

 

2:關於單例NumberMachine,單例的實現:將構造方法定義爲私有,並且定義一個公有的靜態成員變量是自己類的實例,定義靜態方法getInstance()返回前面的自己類的實例的靜態變量。

3:要通過枚舉區分窗口的type:普通、快速、VIP

---------------------- android培訓java培訓、期待與您交流! ----------------------詳細請查看:http://edu.csdn.net/heima
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章