《設計模式》劉偉 實驗參考答案_第1頁
《設計模式》劉偉 實驗參考答案_第2頁
《設計模式》劉偉 實驗參考答案_第3頁
《設計模式》劉偉 實驗參考答案_第4頁
《設計模式》劉偉 實驗參考答案_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、設計模式劉偉 實驗參考答案 實驗 1 1在某圖形庫 api 中提供了多種矢量圖模板,用戶可以基于這些矢量圖創(chuàng)建不同的顯示圖形,圖形庫設計人員設計的初始類圖如下所示: circle+init ()setcolor ()fill ()setsize ()display (): void void: void: void: void:triangle+init ()setcolor ()fill ()setsize ()display () void: void void: void: void:rectangle+init ()setcolor ()fill ()setsize ()display

2、 () void: void: void: void: voidclient 在該圖形庫中,每個圖形類(如 circle、triangle 等)的 init()方法用于初始化所創(chuàng)建的圖形, setcolor()方法用于給圖形設置邊框顏色,fill()方法用于給圖形設置填充顏色,setsize() 方法用于設置圖形的大小,display()方法用于顯示圖形。 客戶類(client)在使用該圖形庫時發(fā)現(xiàn)存在如下問題: 由于在創(chuàng)建窗口時每次只需要使用圖形庫中的一種圖形,因此在更換圖形時需要修改客戶類源代碼; 在圖形庫中增加并使用新的圖形時需要修改客戶類源代碼; 客戶類在每次使用圖形對象之前需要先創(chuàng)建

3、圖形對象,有些圖形的創(chuàng)建過程較為復雜,導致客戶類代碼冗長且難以維護。 現(xiàn)需要根據(jù)面向對象設計原則對該系統(tǒng)進行重構,要求如下: 隔離圖形的創(chuàng)建和使用,將圖形的創(chuàng)建過程封裝在專門的類中,客戶類在使用圖形時無須直接創(chuàng)建圖形對象,甚至不需要關心具體圖形類類名; 客戶類能夠方便地更換圖形或使用新增圖形,無須針對具體圖形類編程,符合開閉原則。 繪制重構之后的類圖并說明在重構過程中所運用的面向對象設計原則。 參考答案: 2使用簡單工廠模式設計一個可以創(chuàng)建不同幾何形狀(shape),如圓形(circle)、矩形(rectangle)和三角形(triangle)等的繪圖工具類,每個幾何圖形均具有繪制draw()

4、和擦除erase()兩個方法,要求在繪制不支持的幾何圖形時,拋出一個 unsupportedshapeexception 異常,繪制類圖并編程模擬實現(xiàn)。 參考答案: shapefactorycreateshape (string type): shape+circle+draw ()erase (): void: voidtriangle+draw ()erase (): void void:shape+draw ()erase (): void: voidrectangle+draw ()erase (): void: voidunsupportedshapeexception(+unsup

5、portedshapeexception string message) 3. 現(xiàn)需要設計一個程序來讀取多種不同類型的圖片格式,針對每一種圖片格式都設計一個圖片讀取器(imagereader),如 gif 圖片讀取器(gifreader)用于讀取 gif 格式的圖片、jpg 圖片讀取器(jpgreader)用于讀取 jpg 格式的圖片。圖片讀取器對象通過圖片讀取器工廠 imagereaderfactory 來創(chuàng)建,imagereaderfactory 是一個抽象類,用于定義創(chuàng)建圖片讀取器的工廠方法,其子類 gifreaderfactory 和 jpgreaderfactory 用于創(chuàng)建具體的圖

6、片讀取器對象。試使用工廠方法模式設計該程序,繪制類圖并編程模擬實現(xiàn)。需充分考慮系統(tǒng)的靈活性和可擴展性。 參考答案: <<create>><<create>>gifreaderfactorycreateimagereader (): imagereader+imagereaderfactorycreateimagereader (): imagereader+gifreader+readimage (): voidimagereader+readimage (): voidjpgreaderfactory+createimagereader ():

7、 imagereaderjpgreader+readimage (): void 4. 某軟件公司欲開發(fā)一套界面皮膚庫,可以對桌面軟件進行界面美化。不同的皮膚將提供視覺效果不同的按鈕、文本框、組合框等界面元素,其結構如下圖所示: 該皮膚庫需要具備良好的靈活性和可擴展性,用戶可以自由選擇不同的皮膚,開發(fā)人員可以在不修改既有代碼的基礎上增加新的皮膚。試使用抽象工廠模式設計該皮膚庫,繪制類圖并編程模擬實現(xiàn)。 參考答案: 5. 使用單例模式的思想實現(xiàn)多例模式,確保系統(tǒng)中某個類的對象只能存在有限個,例如兩個或三個,設計并編寫代碼實現(xiàn)一個多例類。參考答案: multiton- array : multit

8、on- multiton ()+ getinstance () : multiton+ random (): int多例模式(multiton pattern)是單例模式的一種擴展形式,多例類可以有多個實例,而且必須自行創(chuàng)建和管理實例,并向外界提供自己的實例,可以通過靜態(tài)集合對象來存儲這些實例。多例類 multiton 的代碼如下所示: import java.util.*; public class multiton /定義一個數(shù)組用于存儲四個實例 private static multiton array = new multiton(), new multiton(), new mult

9、iton(), new multiton(); /私有構造函數(shù) private multiton() /靜態(tài)工廠方法,隨機返回數(shù)組中的一個實例 public static multiton getinstance() return arrayrandom(); /隨機生成一個整數(shù)作為數(shù)組下標 public static int random() date d = new date(); random random = new random(); int value = math.abs(random.nextint(); value = value % 4; return value; pub

10、lic static void main(string args) multiton m1,m2,m3,m4; m1 = multiton.getinstance(); m2 = multiton.getinstance(); m3 = multiton.getinstance(); m4 = multiton.getinstance(); system.out.println(m1=m2); system.out.println(m1=m3); system.out.println(m1=m4); 6. 使用單例模式設計一個多文檔窗口(注:在 java awt/swing 開發(fā)中可使用jde

11、sktoppane 和 jinternalframe 來實現(xiàn)),要求在主窗體中某個內部子窗體只能實例化一次,即只能彈出一個相同的子窗體,如下圖所示,編程實現(xiàn)該功能。 (注:用 c#或 c+實現(xiàn)類似功能也可以)參考答案: subframe-frame: subframe-+subframe ()getframe (): subframemyiflistenermainclass-buttondesktoppaneiframe: jbutton: jdesktoppane: subframe+()mainclass btlistener subframe 類充當單例類,在其中定義了靜態(tài)工廠方法 g

12、etframe()。 代碼如下所示: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; /子窗口:單例類 class subframe extends jinternalframe private static subframe frame;/靜態(tài)實例 /私有構造函數(shù) private subframe() super("子窗體", true, true, true, false); this.setlocation(20,20); /設置

13、內部窗體位置 this.setsize(200,200); /設置內部窗體大小 this.addinternalframelistener(new myiflistener();/監(jiān)聽窗體事件 this.setvisible(true); /工廠方法,返回窗體實例 public static subframe getframe() /如果窗體對象為空,則創(chuàng)建窗體,否則直接返回已有窗體 if(frame=null) frame=new subframe(); return frame; /事件監(jiān)聽器 class myiflistener extends internalframeadapter

14、/子窗體關閉時,將窗體對象設為 null public void internalframeclosing(internalframeevent e) if(frame!=null) frame=null; /客戶端測試類 class mainclass extends jframe private jbutton button; private jdesktoppane desktoppane; private subframe iframe=null; public mainclass() super("主窗體"); container c=this.getconten

15、tpane(); c.setlayout(new borderlayout(); button=new jbutton("點擊創(chuàng)建一個內部窗體"); button.addactionlistener(new btlistener(); c.add(button, borderlayout.south); desktoppane = new jdesktoppane(); /創(chuàng)建 desktoppane c.add(desktoppane); this.setdefaultcloseoperation(jframe.exit_on_close); this.setlocati

16、onrelativeto(null); this.setsize(400,400); this.show(); /事件監(jiān)聽器 class btlistener implements actionlistener public void actionperformed(actionevent e) if(iframe!=null) desktoppane.remove(iframe); iframe=subframe.getframe(); desktoppane.add(iframe); public static void main(string args) new mainclass();

17、 subframe 類是 jinternalframe 類的子類,在 subframe 類中定義了一個靜態(tài)的 subframe 類型的實例變量,在靜態(tài)工廠方法 getframe()中創(chuàng)建了 subframe 對象并將其返回。在 mainclass 類中使用了該單例類,確保子窗口在當前應用程序中只有唯一一個實例,即只能彈出一個子窗口。 實驗 2 1. 現(xiàn)有一個接口 dataoperation 定義了排序方法 sort(int) 和查找方法 search(int, int),已知類 quicksort 的 quicksort(int)方法實現(xiàn)了快速排序算法,類 binarysearch 的 bin

18、arysearch(int, int)方法實現(xiàn)了二分查找算法。試使用適配器模式設計一個系統(tǒng),在不修改源代碼的情況下將類 quicksort 和類 binarysearch 的方法適配到 dataoperation 接口中。繪制類圖并編程實現(xiàn)。(要求實現(xiàn)快速排序和二分查找,使用對象適配器實現(xiàn))參考答案: operationadapter-sortobjsearchobj quicksort: binarysearch+operationadapter (quicksort sortobj, binarysearch searchobj)sort (int array)search (int ar

19、ray, int key): int: intdataoperation+sort (int array)search (int array, int key) int: intquicksort+quicksort (int array)sort (int array, int p, int r)partition (int a, int p, int r)swap (int a, int i, int j) int: void: int: void:binarysearch+binarysearch (int array, int key): intclient 2. windows me

20、dia player 和 realplayer 是兩種常用的媒體播放器,它們的 api 結構和調用方法存在區(qū)別?,F(xiàn)在你的應用程序需要支持這兩種播放器 api,而且在將來可能還需要支持新的媒體播放器,請問如何設計該應用程序?繪制類圖并編程模擬實現(xiàn)。 參考答案: 可使用適配器模式和抽象工廠模式,參考類圖如下所示: mediaplayerwindowmainwindowmediaplayerfactory+createmainwindow ()createplayerlist () mainwindow: playerlist:playerfactory+createmainwindow ()cre

21、ateplayerlist (): mainwindow: playerlistclientclassrealplayerfactory+createmainwindow ()createplayerlist () mainwindow: playerlistrealplayerwindowmediaplayerlistplayerlistrealplayerlistmediaplayerapirealplayerapi 在該類圖中,為兩種不同的播放器提供了兩個具體工廠類 mediaplayerfactory 和realplayerfactory,其中 mediaplayerfactory 作

22、為 windows media player 播放器工廠,可以創(chuàng)建 windows media player 的主窗口(mediaplayerwindow)和播放列表(mediaplayerlist)(為了簡化類圖,只列出主窗口和播放列表這兩個播放器組成元素,實際情況下包含更多組成元素); realplayerfactory 作為 realplayer 播放器工廠,創(chuàng)建 realplayer 的主窗口 (realplayerwindow)和播放列表(realplayerlist),此時可以使用抽象工廠模式,客戶端針對抽象工廠 playerfactory 編程,如果增加新的播放器,只需增加一個新

23、的具體工廠來生產(chǎn)新產(chǎn)品族中的產(chǎn)品即可。由于需要調用現(xiàn)有 api 中的方法,因此還需要使用適配器模式,在具體產(chǎn)品類如 mediaplayerwindow 和 mediaplayerlist 調用 windows media player api 中的方法,在 realplayerwindow 和 realplayerlist 中調用 realplayer api 中的方法,實現(xiàn)對 api 中方法的適配,此時具體產(chǎn)品如 mediaplayerwindow、realplayerwindow 等充當適配器,而已有的 api 如 mediaplayerapi 和 realplayerapi 是需要適配的

24、適配者。 3. 使用組合模式設計一個殺毒軟件(antivirus)的框架,該軟件既可以對某個文件夾(folder)殺毒,也可以對某個指定的文件(file)進行殺毒,文件種類包括文本文件 textfile、圖片文件 imagefile、視頻文件 videofile。繪制類圖并編程模擬實現(xiàn)。 參考答案: filelistabstractfileabstract +add (abstractfile file)remove (abstractfile file)getchild (int i)killvirus () void: void abstractfile: voidimagefilenam

25、e: string-+imagefile (string name)add (abstractfile file)remove (abstractfile file)getchild (int i)killvirus () void: void abstractfile: void:folder-filelistname arraylist: string:+folder (string name)add (abstractfile file)remove (abstractfile file)getchild (int i)killvirus (): void void: abstractf

26、ile: voidtextfile-name: string+textfile (string name)add (abstractfile file)remove (abstractfile file)getchild (int i)killvirus () void: void abstractfile: void:videofilename: string-+videofile (string name)add (abstractfile file)remove (abstractfile file)getchild (int i)killvirus () void: void: abs

27、tractfile void: 4. 某教育機構組織結構如下圖所示: 北京總部教務辦公室湖南分校行政辦公室長沙教學點湘潭教學點教務辦公室行政辦公室教務辦公室行政辦公室教務辦公室行政辦公室 在該教育機構的 oa 系統(tǒng)中可以給各級辦公室下發(fā)公文,試采用組合模式設計該機構的組織結構,繪制相應的類圖并編程模擬實現(xiàn),在客戶端代碼中模擬下發(fā)公文。 參考答案: 參考類圖如下所示: listunitabstract +handlearchives (): voidofficename: string-+office (string name)handlearchives (): voidinstitution

28、-listname: arraylist: string+institution (string name)add (unit unit)handlearchives (): void: void 本實例使用了安全組合模式,unit 充當抽象構件角色,office 充當葉子構件角色,institution 充當容器構件角色。本實例代碼如下所示: abstract class unit public abstract void handlearchives(); class office extends unit private string name; public office(string

29、 name) = name; public void handlearchives() system.out.println( + "處理公文!"); class institution extends unit private arraylist list = new arraylist(); private string name; public institution(string name) = name; public void add(unit unit) list.add(unit); public v

30、oid handlearchives() system.out.println( + "接收并下發(fā)公文:"); for(object obj : list) (unit)obj).handlearchives(); 在客戶類中創(chuàng)建樹形結構,代碼如下所示: class client public static void main(string args) institution bjheadquarters,hnsubschool,csteachingpost,xtteachingpost; unit toffice1,toffice2,toffice3,t

31、office4,aoffice1,aoffice2,aoffice3,aoffice4; bjheadquarters = new institution("北京總部"); hnsubschool = new institution("湖南分校"); csteachingpost = new institution("長沙教學點"); xtteachingpost = new institution("湘潭教學點"); toffice1 = new office("北京教務辦公室"); toff

32、ice2 = new office("湖南教務辦公室"); toffice3 = new office("長沙教務辦公室"); toffice4 = new office("湘潭教務辦公室"); aoffice1 = new office("北京行政辦公室"); aoffice2 = new office("湖南行政辦公室"); aoffice3 = new office("長沙行政辦公室"); aoffice4 = new office("湘潭行政辦公室"

33、;); csteachingpost.add(toffice3); csteachingpost.add(aoffice3); xtteachingpost.add(toffice4); xtteachingpost.add(aoffice4); hnsubschool.add(csteachingpost); hnsubschool.add(xtteachingpost); hnsubschool.add(toffice2); hnsubschool.add(aoffice2); bjheadquarters.add(hnsubschool); bjheadquarters.add(toff

34、ice1); bjheadquarters.add(aoffice1); bjheadquarters.handlearchives(); 注:本題也可以將員工(employee)作為葉子構件,將 unit 作為容器構件。 5. 某軟件公司為新開發(fā)的智能手機控制與管理軟件提供了一鍵備份功能,通過該功能可以將原本存儲在手機中的通信錄、短信、照片、歌曲等資料一次性全部拷貝到移動存儲介質(例如 mmc 卡或 sd 卡)中。在實現(xiàn)過程中需要與多個已有的類進行交互,例如通訊錄管理類、短信管理類等,為了降低系統(tǒng)的耦合度,試使用外觀模式來設計并編程模擬實現(xiàn)該一鍵備份功能。 參考答案: 參考類圖如下所示: o

35、nekeybackup-cmmmfm contactmanager: messagemanager: filemanager+click (): voidcontactmanager+backup (): voidmessagemanager+backup (): voidfilemanager+backup (): void 其中,onekeybackup 充當外觀角色,contactmanager、messagemanager 和 filemanager 充當子系統(tǒng)角色。 6. 某信息系統(tǒng)需要提供一個數(shù)據(jù)處理和報表顯示模塊,該模塊可以讀取不同類型的文件中的數(shù)據(jù)并將數(shù)據(jù)轉換成 xml 格式,

36、然后對數(shù)據(jù)進行統(tǒng)計分析,最后以報表方式來顯示數(shù)據(jù)。由于該過程需要涉及到多個類,試使用外觀模式設計該數(shù)據(jù)處理和報表顯示模塊??紤]到有些文件本身已經(jīng)是 xml 格式,無須進行格式轉換,為了讓系統(tǒng)具有更好的擴展性,在系統(tǒng)設計中可以引入抽象外觀類。 參考答案: abstractfacadeabstract +()execute xmlfacade+execute ()extendedfacade+execute ()fileoperation+read ()xmldataconvertor+convert ()reportdisplay+display ()dataanalysis()+handle

37、實驗 3 1. 在某應用軟件中需要記錄業(yè)務方法的調用日志,在不修改現(xiàn)有業(yè)務類的基礎上為每一個類提供一個日志記錄代理類,在代理類中輸出日志,例如在業(yè)務方法 method()調用之前輸出“方法 method()被調用,調用時間為 2014-11-5 10:10:10”,調用之后如果沒有拋異常則輸出“方法 method()調用成功”,否則輸出“方法 method()調用失敗”。在代理類中調用真實業(yè)務類的業(yè)務方法,使用代理模式設計該日志記錄模塊的結構,繪制類圖并編程模擬實現(xiàn)。 參考答案: businessclassmethod (): void+abstractlog+method (): voidl

38、oggerproxy-business: businessclass+loggerproxy ()method (): voidclient 2. 某軟件公司承接了某信息咨詢公司的收費商務信息查詢系統(tǒng)的開發(fā)任務,該系統(tǒng)的基本需求如下: (1) 在進行商務信息查詢之前用戶需要通過身份驗證,只有合法用戶才能夠使用該查詢系統(tǒng); (2) 在進行商務信息查詢時系統(tǒng)需要記錄查詢日志,以便根據(jù)查詢次數(shù)收取查詢費用。 該軟件公司開發(fā)人員已完成了商務信息查詢模塊的開發(fā)任務,現(xiàn)希望能夠以一種松耦合的方式向原有系統(tǒng)增加身份驗證和日志記錄功能,客戶端代碼可以無區(qū)別地對待原始的商務信息查詢模塊和增加新功能之后的商務信息

39、查詢模塊,而且可能在將來還要在該信息查詢模塊中增加一些新的功能。 試使用代理模式設計并編程模擬實現(xiàn)該收費商務信息查詢系統(tǒng)?!咎崾荆菏褂帽Wo代理和智能引用代理】參考答案: proxysearcher-searchervalidatorlogger: realsearcher accessvalidator: logger:+dosearch ()validate ()log () string: boolean: void:searcher+dosearch (): stringrealsearcherdosearch (): string+accessvalidator+validate ()

40、: booleanlogger+log (): void 3. 某企業(yè)的 scm(supply chain management,供應鏈管理)系統(tǒng)中包含一個采購審批子系統(tǒng)。該企業(yè)的采購審批是分級進行的,即根據(jù)采購金額的不同由不同層次的主管人員來審批,主任可以審批 5 萬元以下(不包括 5 萬元)的采購單,副董事長可以審批 5 萬元至 10 萬元(不包括 10 萬元)的采購單,董事長可以審批 10 萬元至 50 萬元(不包括 50 萬元)的采購單,50 萬元及以上的采購單就需要開董事會討論決定。如下圖所示: 參考答案: successorapproverabstract #successorna

41、me: approver: string+approver (string name)setsuccessor (approver successor)processrequest (purchaserequest request): void: voiddirector+director (string name)processrequest (purchaserequest request): voidcongress+congress (string name)processrequest (purchaserequest request): voidpurchaserequest-am

42、ountnumberpurpose: double: int: string+purchaserequest (double amount, int number, string purpose)setamount (double amount)getamount ()setnumber (int number)getnumber ()setpurpose (string purpose)getpurpose (): void double: void: int: void: stringvicepresident+vicepresident (string name)processreque

43、st (purchaserequest request): voidpresident+president (string name)processrequest (purchaserequest request): void 4. 某公司欲開發(fā)一個軟件系統(tǒng)的在線文檔幫助系統(tǒng),用戶可以在任何一個查詢上下文中輸入查詢關鍵字,如果當前查詢環(huán)境下沒有相關內容,則系統(tǒng)會將查詢按照一定的順序轉發(fā)給其他查詢環(huán)境?;谏鲜鲂枨?,試采用職責鏈模式對該系統(tǒng)進行設計。 參考答案: successorsearchcontextabstract #successor: searchcontext+setsuccess

44、or (searchcontext successor)search (string keyword): void: voidjavasearchcontext+search (string keyword): voidumlsearchcontext+search (string keyword): voidclientsqlsearchcontext+search (string keyword): void 5. 房間中的開關就是命令模式的一個實例,現(xiàn)用命令模式來模擬開關的功能,可控制對象包括電燈和電風扇,繪制相應的類圖并編程模擬實現(xiàn)。 參考答案: 參考類圖如下所示: lampfansw

45、itch+on ()off () void: void:command+executeon ()executeoff (): void: voidlampcommand-lamp: lamp+executeon ()executeoff (): void: voidlamp+lighten ()quench (): void: voidfancommand-fan: fan+executeon ()executeoff (): void: voidfan+run ()stop (): void: void 其中,switch 充當調用者(發(fā)送者)角色,command 是抽象命令類,lampco

46、mmand 和 fancommand 充當具體命令角色,lamp 和 fan 充當接收者角色。 6. 某軟件公司欲開發(fā)一個基于 windows 平臺的公告板系統(tǒng)。系統(tǒng)提供一個主菜單(menu),在主菜單中包含了一些菜單項(menuitem),可以通過 menu 類的 addmenuitem()方法增加菜單項。菜單項的主要方法是 click(),每一個菜單項包含一個抽象命令類,具體命令類包括 opencommand(打開命令),createcommand(新建命令),editcommand(編輯命令)等,命令類具有一個 execute()方法,用于調用公告板系統(tǒng)界面類(boardscreen)的

47、 open()、create()、 edit()等方法?,F(xiàn)使用命令模式設計該系統(tǒng),使得 menuitem 類與 boardscreen 類的耦合度降低,繪制類圖并編程實現(xiàn)。 參考答案: boardscreen-menu: menu+boardscreen ()display ()open ()create ()edit (): void: void: void: voidmenu+itemlist: arraylistaddmenuitem (menuitem item): void+menuitem-namecommand: string: command+menuitem (string

48、name)getname ()setname (string name)getcommand ()setcommand (command command)click (): string: void: command: void void:command+execute (): voidopencommand-screen: boardscreen+opencommand (boardscreen screen):execute () voidcreatecommand-screen: boardscreen+createcommand (boardscreen screen)execute

49、(): voideditcommand-screen: boardscreen+editcommand (boardscreen screen) voidexecute (): 其中,boardscreen 充當接收者角色,menuitem 充當調用者角色,command 充當抽象命令角色,opencommand、createcommand 和 editcommand 充當具體命令角色。 實驗 4 1. 某實時在線股票軟件需要提供如下功能:當股票購買者所購買的某支股票價格變化幅度達到 5%時,系統(tǒng)將自動發(fā)送通知(包括新價格)給購買該股票的所有股民。試使用觀察者模式設計并實現(xiàn)該系統(tǒng),要求繪制相應

50、的類圖并編程模擬實現(xiàn)。 參考答案: investorsconcreteinvestorname: string-+concreteinvestor (string name) voidresponse (stock stock):investor+response (stock stock): voidstock-investorsstocknameprice: arraylist: string double:+stock (string stockname, double price)attach (investor investor)detach (investor investor)setstockname (string sto

溫馨提示

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

評論

0/150

提交評論