實驗五:責任鏈模式_第1頁
實驗五:責任鏈模式_第2頁
實驗五:責任鏈模式_第3頁
實驗五:責任鏈模式_第4頁
實驗五:責任鏈模式_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、實驗 5:責任鏈模式、實驗目的本實驗要求學生掌握責任鏈模式, 要求學生理解責任鏈模式中的 二種角色并完成類的定義及測試。二、實驗任務1計算整數(shù)的階乘。要求在計算階乘時綜合考慮計算速度與內(nèi)存占用多少,使用責任 鏈模式分析有哪些類以及這些類的角色,完成這些類的定義并分別測試每一種處理情況。答:處理者( Handler )角色:類 Handler具體處理者( ConcreteHandler )角色:類 UseInt、類 UseLong、類 UseBigInteger(1) 處理者( Handler )Handler.javapublic interfacepublic voidHandler han

2、dleRequest(String str);publicvoid setNextHandler(Handler handler);(2) 具體處理者( ConcreteHandler )UseInt.javapublic class UseInt implements Handler private Handler handler ; private int result = 1;public void handleRequest(String str) try int n=Integer. parseInt (str);int i=1;while (i=n)result = result

3、*i;if ( result =0)System. out .println( 超出我的能力范圍,我計算不了 );handler .handleRequest(str);return ;i+;System. out .println(str+ 的階乘: + result +n ); catch (NumberFormatException exp) System. out .println(exp.toString();public void setNextHandler(Handler handler) this . handler =handler;UseLong.javapublic c

4、lass UseLong implements Handler private Handler handler ;long result =1;public void handleRequest(String str)try int i=1;long n=Long. parseLong (str);while (i=n)result = result *i;if ( result =0)System. out .println( 超出我的能力范圍,我計算不了 );handler .handleRequest(str);return ;i+;System. out .println(str+ 的

5、階乘: + result +n ); catch (NumberFormatException exp) System. out .println(exp.toString();public void setNextHandler(Handler handler)this . handler =handler;UseBigInteger.javapublic class UseBigInteger implements Handlerprivate Handler handler ;private BigInteger result = new BigInteger( 1 );public v

6、oid handleRequest(String str)BigInteger n = new BigInteger(str);BigInteger ONE =new BigInteger( 1 );BigInteger i = ONE;while (pareTo(n)=0) result = result .multiply(i); i=i.add(ONE);System. out .println(str+ 的階乘: +result +n ); public void setNextHandler(Handler handler) this . handler =handler;3)測試類

7、:Test.javapublic class Test private Handler useInt , useLong , useBigInteger public void createChain()useInt = new UseInt();useLong = new UseLong();useBigInteger = new UseBigInteger(); useInt .setNextHandler( useLong );useLong .setNextHandler( useBigInteger );public void responseClient(String str)Sy

8、stem. out .println(計算 +str+ 的階乘 );useInt .handleRequest(str);public static void main(String args) Test test= new Test();test.createChain();test.responseClient(10test.responseClient(20test.responseClient(32);););運行截圖如下:2采購審批往往是分級進行的,其常常根據(jù)采購金額的不同由不同層次的主管人員來 審批。例如,主任可以審批 5 萬元以下(不包括 5 萬元)的采購單,副董事長可以審批 5

9、 萬元至 10 萬元(不包括 10 萬元)的采購單,董事長可以審批 10 萬元至 50 萬元(不包括 50 萬元) 的采購單, 50 萬元及以上的采購單就需要開董事會討論決定。 使用責任鏈模式分 析有哪些類以及這些類的角色,完成這些類的定義并分別測試每一種處理情況。答:處理者( Handler )角色:類 Handler具體處理者( ConcreteHandler )角色:類 ChairMan.java、類 Vice_president 、類 President 、 類 Meetting(1)處理者( Handler )Handler.javapublic interface Handler

10、publicpublicvoid handleRequest(String str);void setNextHandler(Handler handler);(2)具體處理者( ConcreteHandler )long money = Long.parseLong (str);ChairMan.javapublic classHandlerChairMan implements Handler handler ;publictryvoid requestHandle(String str)if (money=50000&money=100000&money=0) System. out .

11、println( 會議審批 +money+ 元 ); System. out .println(); catch (Exception e)public void setNextHandler(Handler handler)this . handler =handler;(3) 測試類:Test.javapublic class Test ChairMan chairman ;Vice_president vice_president ;President president ;Meetting meetting ;public void createChine()chairman = ne

12、w ChairMan();vice_president = new Vice_president();president = new President();meetting = new Meetting ();chairman .setNextHandler(vice_president);vice_president .setNextHandler( president ); president.setNextHandler(meetting );public voidSystem. chairmansetClientRequest(String str)out .println( 采購金

13、額 : +str+ 元 ); .requestHandle(str);public staticvoid main(String args) Test test = new Test();6000 );60000 ); 110000 ); 6000000 );test.createChine();test.setClientRequest(test.setClientRequest( test.setClientRequest( test.setClientRequest(運行截圖如下:3公司請假審批流程如下:如果請假小于3 天只需要項目經(jīng)理批復就行;如果請假大于等于 3 天,小于 7 天需要

14、人事經(jīng)理批復;如果請假大于等于7 天,小于 15 天需要總經(jīng)理批復;如果申請請假大于等于 15 天,決絕批復。使用責任鏈模式分析有哪些類以及這些類 的角色,完成這些類的定義并分別測試每一種處理情況。答:處理者( Handler )角色:類 Handler具體處理者( ConcreteHandler )角色:類 Project_Manager 、類 Personel_Manager 、 類 Top_Manager 、 類 Meetting(1)處理者( Handler )Handler.java public interfaceHandler publicvoid handleRequest(S

15、tring str);publicvoid setNextHandler(Handler handler);(2)具體處理者( ConcreteHandler )Project_Manager.javapublic classProject_Manager implements HandlerHandler handler ;public void requestHandle(String str)try int day=Integer.parseInt(str);if (day=3&day=7&day=15)System. out .println( 決絕批復 n ); catch (Exc

16、eption e)public void setNextHandler(Handler handler) this . handler =handler;(3) 測試類:Test.javapublic class Test Project_Manager projectmanager ; Personel_Manager personelmanager ;Top_Manager topmanager ;Meetting meetting ;public void createChine()projectmanager = new Project_Manager(); personelmanager = new Personel_Manager(); topmanager = new Top_Manager();meetting = new Meetting ();projectmanager .setNextHandler( personelmanager ); personelmanager .setNextHandler( topmanager ); topmanager .setNextHandler( meetting );public void setClientRequest(String

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論