




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計說明書課程設(shè)計說明書 課程名稱設(shè)計模式課程設(shè)計 設(shè)計題目設(shè)計模式在FileUpload組件中的應(yīng)用 班號專業(yè)軟件工程 學(xué)生姓名###### 指導(dǎo)教師(簽字)目錄設(shè)計模式概述1.1模式與設(shè)計模式1.2設(shè)計模式的定義1.3設(shè)計模式的基本要素1.4設(shè)計模式的分類FileUpload組件簡介2.1FileUpload組件由來及使用2.2FileUpload組件的工作原理2.3FileUpload組件中的部分接口、類簡介設(shè)計模式在FileUpload組件中的應(yīng)用3.1工廠方法模式在FileUpload組件中的應(yīng)用3.2策略模式在FileUpload組建中的應(yīng)用3.3迭代器模式在FileUpload組建中的應(yīng)用3.4FileUpload組件中的重要類圖結(jié)束語4.1收獲與總結(jié)4.2參考文獻(xiàn)設(shè)計模式概述1.1模式與設(shè)計模式模式起源于建筑業(yè)而非軟件業(yè),模式(Pattern)之父—美國加利佛尼亞大學(xué)環(huán)境結(jié)構(gòu)中心研究所所長ChristopherAlexander博士。Alexander給出了關(guān)于模式的經(jīng)典定義:每個模式都描述了我們環(huán)境中不斷出現(xiàn)的問題,然后描述了解決這個問題解決方案的核心,通過這種方式,我們可以無數(shù)次的重用那些已有的解決方案,無需再重復(fù)相同的工作,也可以用一句話概括為:模式是在特定環(huán)境中解決問題的一種方案。最早將Alexander博士的模式思想引入軟件工程方法學(xué)的是以四人組(GangofFour,GoF)自稱的四位著名軟件工程學(xué)者,他們在1949歸納發(fā)表的23中在軟件開發(fā)中使用頻率較高的設(shè)計模式,旨在用模式來統(tǒng)一溝通面向?qū)ο蠓椒▽W(xué)在分析、設(shè)計和實現(xiàn)間的鴻溝。GoF將模式的概念引入軟件工程領(lǐng)域,標(biāo)志著軟件模式的誕生,軟件模式是將模式的一般概念應(yīng)用于軟件開發(fā)領(lǐng)域,即軟件開發(fā)的總體指導(dǎo)思想或參照樣板軟件模式并非僅限于設(shè)計模式,還包括架構(gòu)模式、分析模式、和過程模式等。從1987年KentBeck和WardCunningham借鑒Alexander的模式思想在程序開發(fā)中開始應(yīng)用一些模式到目前設(shè)計模式在軟件開發(fā)的廣泛應(yīng)用,Sun公司的JavaSE/JavaEE平臺和Microsoft公司的.net平臺設(shè)計中就應(yīng)用了大量的設(shè)計模式。再設(shè)計模式領(lǐng)域,下一的設(shè)計模式是指GoF的《設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》一書中包含的23中經(jīng)典設(shè)計模式,不過設(shè)計模式并不僅僅只有這23中,隨著軟件開發(fā)技術(shù)的發(fā)展,越來越多的模式不斷誕生并得以廣泛應(yīng)用。1.2設(shè)計模式的定義設(shè)計模式(DesignPattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié),使用設(shè)計模式是為了可重用代碼,讓代碼更容易被他人理解,保證代碼的可靠性。1.3設(shè)計模式的基本要素1.3.1模式名稱(Patternname)模式名稱通過一兩個詞來描述模式的問題、解決方案和效果,以便更好地理解模式并方便開發(fā)人員之間的交流,絕大多數(shù)模式都是根據(jù)其功能或模式結(jié)構(gòu)來命名的。 1.3.2問題(Problem)
問題描述了應(yīng)該在何時使用模式,它包含了設(shè)計中存在的問題以及問題存在的原因。這些問題有些是一些特定的設(shè)計問題,如怎樣使用對象封裝狀態(tài)或者使用對象表示算法等,也可能是系統(tǒng)中存在不靈活的類或?qū)ο蠼Y(jié)構(gòu),導(dǎo)致系統(tǒng)可維護(hù)性較差。1.3.3解決方案(Solution)解決方案描述了設(shè)計模式的組成成分,以及這些組成成分之間的相互關(guān)系,各自的職責(zé)和協(xié)作方式。模式是一個通用的模板,它們可以應(yīng)用于各種不同的場合,解決方案并不描述一個特定而具體的設(shè)計或?qū)崿F(xiàn),而是提供設(shè)計問題的抽象描述和怎樣用一個具有一般意義的元素組合(類或?qū)ο蠼M合)來解決這個問題。1.3.4效果(Consequences)效果描述了模式應(yīng)用的效果以及在使用模式時應(yīng)權(quán)衡的問題。效果主要包含模式的優(yōu)缺點分析,我們應(yīng)該知道,沒有任何一個解決方案是百分之百完美的,在使用設(shè)計模式時需要進(jìn)行合理的評價和選擇。1.4設(shè)計模式的分類根據(jù)設(shè)計模式的目的(模式是用來做什么的)可分為創(chuàng)建型(creational)、結(jié)構(gòu)型(structural)和行為型(behavioral)三種。以下是GoF的23中經(jīng)典模式的分類。FileUpload組件簡介2.1.FileUpload組件由來及使用FileUpload是Apachecommons下面的一個子項目,用來實現(xiàn)Java環(huán)境下面的文件上傳功能,與常見的Smartypants齊名。需要注意的是FileUpload組件在使用時依賴于CommonsIO組件,因此在繼續(xù)之前,要確保在你的工程classpath中有描述頁中提到的相應(yīng)版本,本次課程實際使用的FileUpload版本為:commons-fileupload-1.3.1,CommonsIO版本為:commons-io-1.4。2.2.FileUpload組件的工作原理上傳的文件要求包括一個根據(jù)RFC1867(在HTML中基于表單的文件)編碼的選項列表清單。組件FileUpload可以解析這個請求,并給你的應(yīng)用程序提供一份獨立上傳的項目清單。無論每個項目背后如何執(zhí)行都實現(xiàn)了FileItem接口。這里將描述組件FileUpload庫的普通API,這些API比較簡單。不過,對于最終的實現(xiàn),你可以參考最新的API流。每一個文件項目都有一些屬性,這些可能在你的應(yīng)用程序中應(yīng)用到。比如:每一個項目有一個名稱name和內(nèi)容類型contenttype,并提供了一個InputStream訪問其數(shù)據(jù)。另一方面,你處理項目的方法可能有所不同,這個依賴于是否這個項目是一個規(guī)則的表單域,即:這個數(shù)據(jù)是來自普通的表單文本,還是普通的HTML域或是一個上傳文件。在FileItem接口中提供了處理這些問題的方法,可以更加方便的去訪問這些數(shù)據(jù)。組件FileUpload使用FileItemFactory工廠創(chuàng)建新的文件項目。這個給了組件FileUpload很大的靈活性。這個工廠擁有怎樣創(chuàng)建項目的最終控制權(quán)。工廠執(zhí)行過程中上傳項目文件的臨時數(shù)據(jù)可以存儲在內(nèi)存中或硬盤上。這個依賴于上傳項目的大小(即:數(shù)據(jù)的字節(jié))。不過這種行為可以在你的應(yīng)用程序中適當(dāng)?shù)淖远ㄖ啤?.3FileUpload組件中部分接口、類簡介2.3.1FileItem接口mons.fileupload.disk.DiskFileItem實現(xiàn)了FileItem接口,用來封裝單個表單字段元素的數(shù)據(jù)。通過調(diào)用FileItem定義的方法可以獲得相關(guān)表單字段元素的數(shù)據(jù)。2.3.2FileUpload類FileUpload類的繼承結(jié)構(gòu):java.lang.Omons.fileupload.FileUploadBase mons.fileupload.FileUpload2.3.3DiskFileItemFactory此類將請求消息實體中的每一個項目封裝成單獨的DiskFileItem(FileItem接口的實現(xiàn))對象的任務(wù)由mons.fileupload.FileItemFactory接口的默認(rèn)實現(xiàn)mons.fileupload.disk.DiskFileItemFactory來完成。當(dāng)上傳的文件項目比較小時,直接保存在內(nèi)存中(速度比較快),比較大時,以臨時文件的形式,保存在磁盤臨時文件夾(雖然速度慢些,但是內(nèi)存資源是有限的)。2.3.4ServletFileUpload類mons.fileupload.servlet.ServletFileUpload類是Apache文件上傳組件處理文件上傳的核心高級類(所謂高級就是不需要管底層實現(xiàn),暴露給用戶的簡單易用的接口)。使用其parseRequest(HttpServletRequest)方法可以將通過表單中每一個HTML標(biāo)簽提交的數(shù)據(jù)封裝成一個FileItem對象,然后以List列表的形式返回。第三章設(shè)計模式在FileUpload組件中的應(yīng)用3.1工廠方法模式在FileUpload組件中的應(yīng)用3.1.1工廠方法模式定義工廠方法模式(FactoryMethodPattern)定義:工廠方法模式又稱為工廠模式,也叫虛擬構(gòu)造器(VirtualConstructor)模式或者多態(tài)工廠(PolymorphicFactory)模式,它屬于類創(chuàng)建型模式。在工廠方法模式中,工廠父類負(fù)責(zé)定義創(chuàng)建產(chǎn)品對象的公共接口,而工廠子類則負(fù)責(zé)生成具體的產(chǎn)品對象,這樣做的目的是將產(chǎn)品類的實例化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應(yīng)該實例化哪一個具體產(chǎn)品類。3.1.2工廠方法模式結(jié)構(gòu)1.Product(抽象產(chǎn)品)
抽象產(chǎn)品是定義產(chǎn)品的接口,是工廠方法模式所創(chuàng)建對象的超類型,也就是產(chǎn)品對象的共同父類或接口。2.ConcreteProduct(具體產(chǎn)品)具體產(chǎn)品實現(xiàn)了抽象產(chǎn)品接口,某種類型的具體產(chǎn)一一對應(yīng)。3.Factory(抽象工廠)在抽象工廠類中,聲明了工廠方法(FactoryMethod)廠方法模式的核心,它與應(yīng)用程序無關(guān)。任何在模式中創(chuàng)建對象的工廠類都必須實現(xiàn)該接口。4.ConcreteFactory(具體工廠)具體工廠是抽象工廠類的子類,實現(xiàn)了抽象工廠中返回一個具體產(chǎn)品類的實例。在具體工廠類中包含與應(yīng)用程序調(diào)用以創(chuàng)建產(chǎn)品對象。
3.1.3模式分析工廠方法模式是簡單工廠模式的進(jìn)一步抽象和推廣。工廠方法模式保持了簡單工廠模式的優(yōu)點,而且克服了的工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建工負(fù)責(zé)給出具體工廠必須實現(xiàn)的接口,而不負(fù)責(zé)哪一個產(chǎn)方法模式可以允許系統(tǒng)在不修改工廠角色的情況下引進(jìn)類與產(chǎn)品類往往具有平行的等級結(jié)構(gòu),它們之間一一對應(yīng)。通過分析,該組件中應(yīng)用了工廠方法模式的類如下:FileItemFactory類(抽象工廠):是工廠方法的核心,它與應(yīng)用程序無關(guān)。包含了抽象的工廠方法:FileItemcreateItem(StringfieldName,StringcontentType,booleanisFormField,StringfileName);返回一個抽象產(chǎn)品FileItem對象。DiskFileItemFactory類(具體工廠):實現(xiàn)了抽象工廠方法FileItemcreateItem(),在工廠方法中創(chuàng)建并返回一個對象的具體產(chǎn)品。publicFileItemcreateItem(StringfieldName,StringcontentType,booleanisFormField,StringfileName){DiskFileItemresult=newDiskFileItem(fieldName,contentType,isFormField,fileName,sizeThreshold,repository);FileCleaningTrackertracker=getFileCleaningTracker();if(tracker!=null){tracker.track(result.getTempFile(),result);}returnresult;}FileItem類(抽象產(chǎn)品),是一個接口,其中包含了產(chǎn)品類所具有的所有的業(yè)務(wù)方法。InputStreamgetInputStream()throwsIOException;StringgetContentType();StringgetName();booleanisInMemory();longgetSize();byte[]get();StringgetString(Stringencoding)throwsUnsupportedEncodingException;StringgetString();voidwrite(Filefile)throwsException;voiddelete();StringgetFieldName();voidsetFieldName(Stringname);booleanisFormField();voidsetFormField(booleanstate);OutputStreamgetOutputStream()throwsIOException;DiskFileItem類(具體產(chǎn)品類):是抽象產(chǎn)品FileItem接口的子類,實現(xiàn)了FileItem接口中所有的業(yè)務(wù)方法,以下就其中的部分方法的實現(xiàn)做介紹:publicInputStreamgetInputStream()throwsIOException{if(!isInMemory()){returnnewFileInputStream(dfos.getFile());}if(cachedContent==null){cachedContent=dfos.getData();}returnnewByteArrayInputStream(cachedContent);}3.2策略模式在FileUpload組建中的應(yīng)用3.2.1策略模式定義策略模式(StrategyPattern)定義:定義一系列算法,將每一個算法封裝起來,并讓它們可以相互替換。策略模式讓算法獨立于使用它的客戶而變化,也稱為政策模式(Policy)策略模式是一種對象行為型模式。3.2.2策略模式結(jié)構(gòu)圖Context(環(huán)境類)環(huán)境類是使用算法的角色,它在解決某個問題時可以采用多種策略。在環(huán)境類中維護(hù)一個對抽象策略類的引用實例,用于定義所采用的策略。Strategy(抽象策略類)抽象策略類為所支持的算法申明了抽象方法,是所有策略類的父類,他可以是抽象類也可以是接口。環(huán)境類使用在其中聲明的方法調(diào)用在具體策略類中實現(xiàn)的算法。concretStrategy(具體策略類)具體策略類實現(xiàn)了在抽象策略中定義的算法,在運(yùn)行時,具體策略類將覆蓋在環(huán)境淚中定義的抽象策略類對象,使用一種具體的算法實現(xiàn)某個業(yè)務(wù)處理。
3.2.3策略模式分析策略模式是對算法的封裝,它把算法的責(zé)任和算法本身分割開,委派給不同的對象管理。策略模式通常把一個系列的算法封裝到一系列的策略類里面,作為一個抽象策略類的子類。用一句話來說,就是“準(zhǔn)備一組算法,并將每一個算法封裝起來,使得它們可以互換”。3.2.4策略模式在FileUpload組件中的分析類圖如下:FileUpload類(環(huán)境類)publicclassFileUploadextendsFileUploadBase{privateFileItemFactoryfileItemFactory;publicFileUpload(){super();}publicFileUpload(FileItemFactoryfileItemFactory){super();this.fileItemFactory=fileItemFactory;}publicFileItemFactorygetFileItemFactory(){returnfileItemFactory;}publicvoidsetFileItemFactory(FileItemFactoryfactory){this.fileItemFactory=factory;}}FileUpload類是環(huán)境類,他定義并維持了對抽象策略類的一個引用,通過其方法privateFileItemFactoryfileItemFactory;可以在運(yùn)行時設(shè)置一種具體策略,并在其算法下調(diào)用策略類提供的算法完成相應(yīng)的業(yè)務(wù)處理。FileItemFactory類(抽象策略類)publicinterfaceFileItemFactory{FileItemcreateItem(StringfieldName,StringcontentType,booleanisFormField,StringfileName);}FileItemFactory作為抽象策略類,它定義了算法的抽象定義,而在其子類DiskFileItemFactory類中實現(xiàn)了具體算法。DiskFileItemFactory類(具體策略類)publicclassDiskFileItemFactoryimplementsFileItemFactory{publicstaticfinalintDEFAULT_SIZE_THRESHOLD=10240;privateFilerepository;privateintsizeThreshold=DEFAULT_SIZE_THRESHOLD;privateFileCleaningTrackerfileCleaningTracker;publicDiskFileItemFactory(){this(DEFAULT_SIZE_THRESHOLD,null);}publicDiskFileItemFactory(intsizeThreshold,Filerepository){this.sizeThreshold=sizeThreshold;this.repository=repository;}publicFilegetRepository(){returnrepository;}publicvoidsetRepository(Filerepository){this.repository=repository;}publicintgetSizeThreshold(){returnsizeThreshold;}publicvoidsetSizeThreshold(intsizeThreshold){this.sizeThreshold=sizeThreshold;}publicFileItemcreateItem(StringfieldName,StringcontentType,booleanisFormField,StringfileName){DiskFileItemresult=newDiskFileItem(fieldName,contentType,isFormField,fileName,sizeThreshold,repository);FileCleaningTrackertracker=getFileCleaningTracker();if(tracker!=null){tracker.track(result.getTempFile(),result);}returnresult;}publicFileCleaningTrackergetFileCleaningTracker(){returnfileCleaningTracker;}publicvoidsetFileCleaningTracker(FileCleaningTrackerpTracker){fileCleaningTracker=pTracker;}}DiskFileItemFactory類作為FileItemFactory類的子類,是一種具體策略類,實現(xiàn)了抽象策略類中的方法。3.3迭代器模式在FileUpload組建中的應(yīng)用3.3.1迭代器模式定義迭代器模式(Iteratorpattern)定義:提供一種方法來訪問聚合對象,而不用暴露這個對象的內(nèi)部表示,其別名為游標(biāo)(Cursor)。迭代器模式是一種對象行為型模式。3.3.2迭代器模式結(jié)構(gòu)迭代器模式包含如下角色:Iterator(抽象迭代器)
抽象迭代器定義了訪問和遍歷元素的接口,一般聲明如下方法:用于獲取第一個元素的first(),用于訪問下一個元素的next(),用于判斷是否還有下一個元素的hasNext(),用于獲取當(dāng)前元素的。urrentltemO,在其子類中將實現(xiàn)這些方法。Concretelterator(具體迭代器)
具體迭代器實現(xiàn)了抽象迭代器接口,完成對聚合對象的遍歷,同時在對聚合進(jìn)行遍歷時跟蹤其當(dāng)前位置。Aggregate(抽象聚合類)抽象聚合類用于存儲對象,并定義創(chuàng)建相應(yīng)迭代器對象的接口,聲明一個createIterator()方法用于創(chuàng)建一個迭代器對象。4.ConcreteAggregate(具體聚合類)具體聚合類實現(xiàn)了創(chuàng)建相應(yīng)迭代器的接口,實現(xiàn)了在聚合類中聲明的createlterator()方法,該方法返回一個與該具體聚合對應(yīng)的具體迭代器Concretelterator實例。
3.3.3迭代器模式分析根據(jù)“單一職責(zé)原則”,在面向?qū)ο笤O(shè)計時,對象承擔(dān)的職責(zé)越少,則該對象的穩(wěn)定性就很好,受到的約束也就越少,復(fù)用也就越方便。職責(zé)分離可以最大限度地減少彼此之間的耦合程度,從而建立一個松散藕合的對象網(wǎng)絡(luò),職責(zé)分離的要點是對被分離的職責(zé)進(jìn)行封裝,以抽象的方式建立起彼此之間的關(guān)系。以聚合對象為例,聚合是一個管理和組織數(shù)據(jù)對象的數(shù)據(jù)結(jié)構(gòu)。這就表明聚合首先應(yīng)備一個基本功能,即存儲數(shù)據(jù),這其中包含存儲數(shù)據(jù)的類型、存儲空間的大小、存儲空間的配,以及存儲的方式和順序。如果不具備這些特點,則該對象就不能稱為聚合對象。也就,存儲數(shù)據(jù)是聚合對象最基本的職責(zé)。然而,聚合對象除了能夠存儲數(shù)據(jù)外,還必須提前遍歷訪問其內(nèi)部數(shù)據(jù)的方式,同時這些遍歷方式可能會根據(jù)不同的情形提供不同的實現(xiàn)正向遍歷或逆向遍歷等。因此,聚合對象主要擁有兩個職責(zé):一是存儲內(nèi)部數(shù)據(jù);二是遍歷內(nèi)部數(shù)據(jù)。但是前者是聚合對象的基木功能,而后者是可以分離的。因此,我們將遍歷聚合對象中數(shù)據(jù)的行為提取出來,封裝到一個迭代器中,通過專門的迭代器來遍歷聚合對象內(nèi)部數(shù)據(jù),這就是迭代器模式的本質(zhì)。迭代器模式是“單一職責(zé)原則”的完美體現(xiàn)。經(jīng)分析可知,迭代器模式在FileUpload組件中的應(yīng)用情況如下:FileItemIterator(抽象迭代器):publicinterfaceFileItemIterator{booleanhasNext()throwsFileUploadException,IOException;FileItemStreamnext()throwsFileUploadException,IOException;}Next方法用于訪問下一個元素,hasNext方法用于判斷是否還有下一個元素。FileItemIteratorImpl(具體迭代器):privateclassFileItemIteratorImplimplementsFileItemIterator{FileItemIteratorImpl(RequestContextctx)throwsFileUploadException,IOException{if(ctx==null){thrownewNullPointerException("ctxparameter");}StringcontentType=ctx.getContentType();if((null==contentType)||(!contentType.toLowerCase(Locale.ENGLISH).startsWith(MULTIPART))){thrownewFileUploadBase.InvalidContentTypeException(format("therequestdoesn'tcontaina%sor%sstream,contenttypeheaderis%s",contentType));}.................(此處省略若干行)publicbooleanhasNext()throwsFileUploadException,IOException{if(eof){returnfalse;}if(itemValid){returntrue;}try{returnfindNextItem();}catch(FileUploadIOExceptione){//unwrapencapsulatedSizeExceptionthrow(FileUploadException)e.getCause();}}publicFileItemStreamnext()throwsFileUploadException,IOException{if(eof||(!itemValid&&!hasNext())){thrownewNoSuchElementException();}itemValid=false;returncurrentItem;}}抽象聚合類(FileItemStream)publicinterfaceFileItemStreamextendsFileItemHeadersSupport{publicstaticclassItemSkippedExceptionextendsIOException{privatestaticfinallongserialVersionUID=-7280778431581963740L;}InputStreamopenStream()throwsIOException;StringgetContentType();StringgetName();StringgetFieldName();booleanisFormField();}具體聚合類(FileItemStreamImpl)publicclassFileItemStreamImplimplementsFileItemStream{privatefinalStringcontentType;privatefinalStringfieldName;privatefinalStringname;privatefinalbooleanformField;privatefinalInputStreamstream;privatebooleanopened;privateFileItemHeadersheaders;FileItemStreamImpl(StringpName,StringpFieldName,StringpContentType,booleanpFormField,longpContentLength)throwsIOException{name=pName;fieldName=pFieldName;contentType=pContentType;formField=pFormField;......(省略若干行)publicStringgetContentType(){returncontentType;}publicStringgetFieldName(){returnfieldName;}publicStringgetName(){returnStreams.checkFileName(name);}publicbooleanisFormField(){returnformField;}publicInputStreamopenStream()throwsIOException{if(opened){thrownewIllegalStateException("Thestreamwasalreadyopened.");}if(((Closeable)stream).isClosed()){thrownewFileItemStream.ItemSkippedException();}returnstream;}voidclose()throwsIOException{stream.close();}publicFileItemHeadersgetHeaders(){returnheaders;}publicvoidsetHeaders(FileItemHeaderspHeaders){headers=pHeaders;}}3.4FileUpload組件中的重要類圖3.4.1所有類匯總圖:3.4.2重要類之間的類圖:FileItem類
FileItem類用來封裝單個表單字段元素的數(shù)據(jù),一個表單字段元素對應(yīng)一個FileItem對象,通過調(diào)用FileItem對象的方法可以獲得相關(guān)表單字段元素的數(shù)據(jù)。FileItem是一個接口,在應(yīng)用程序中使用的實際上是該接口一個實現(xiàn)類,該實現(xiàn)類的名稱并不重要,程序可以采用FileItem接口類型來對它進(jìn)行引用和訪問,為了便于講解,這里將FileItem實現(xiàn)類稱之為FileItem類。FileItem類還實現(xiàn)了Serializable接口,以支持序列化操作。其中的重要方法為:isFormField方法用于判斷FileItem類對象封裝的數(shù)據(jù)是否屬于一個普通表單字段,還是屬于一個文件表單字段,如果是普通表單字段則返回true,否則返回false。該方法的完整語法定義如下:
publicbooleanisFormField();getName方法用于獲得文件上傳字段中的文件名。getName方法的完整語法定義如下:
publicStringgetName();write方法用于將FileItem對象中保存的主體內(nèi)容保存到某個指定的文件中。其完整語法定義如下:
publicvoidwrite(Filefile);getString方法用于將FileItem對象中保存的主體內(nèi)容作為一個字符串返回,它有兩個重載的定義形式:
publicjava.lang.StringgetString()
publicjava.lang.StringgetString(java.lang.Stringencoding)
throwsjava.io.UnsupportedEncodingException;getContentType方法用于獲得上傳文件的類型,getContentType方法的完整語法定義如下:
publicStringgetContentType();isInMemory方法用來判斷FileItem類對象封裝的主體內(nèi)容是存儲在內(nèi)存中,還是存儲在臨時文件中,如果存儲在內(nèi)存中則返回true,否則返回false。其完整語法定義如下:
publicbooleanisInMemory();FileUploadException類在文件上傳過程中,可能發(fā)生各種各樣的異常,例如網(wǎng)絡(luò)中斷、數(shù)據(jù)丟失等等。為了對不同異常進(jìn)行合適的處理,Apache文件上傳組件還開發(fā)了四個異常類,其中FileUploadException是其他異常類的父類,其他幾個類只是被間接調(diào)用的底層類,對于Apache組件調(diào)用人員來說,只需對FileUploadException異常類進(jìn)行捕獲和處理即可。MultipartStream類用來對上傳的請求輸入流進(jìn)行解析,它是整個Apache上傳組件中最復(fù)雜的類。
DiskFileUpload類是文件上傳組件的核心類,它是一個總的控制類,首先由Apache文件上傳組件的使用者直接調(diào)用DiskFileUpload類的方法,DiskFileUpload類再調(diào)用和協(xié)調(diào)更底層的類來完成具體的功能。解析類MultipartStream和工廠類DefaultFileItemFactory就是DiskFileUpload類調(diào)用的兩個的底層類。MultipartStream類用于對請求消息中的實體數(shù)據(jù)進(jìn)行具體解析,DefaultFileItemFactory類對MultipartStream類解析出來的數(shù)據(jù)進(jìn)行封裝,它將每個表單字段數(shù)據(jù)封裝成一個個的FileItem類對象,用戶通過FileItem類對象來獲得相關(guān)表單字段的數(shù)據(jù)。DefaultFileItem是FileItem接口的實現(xiàn)類,實現(xiàn)了FileItem接口中定義的功能,用戶只需關(guān)心FileItem接口,通過FileItem接口來使用DefaultFileItem類實現(xiàn)的功能。DefaultFileItem類使用了兩個成員變量來分別存儲表單字段數(shù)據(jù)的描述頭和主體內(nèi)容,其中保存主體內(nèi)容的變量類型為DeferredFileOutputStream類。DeferredFileOutputStream類是一個輸出流類型,在開始時,DeferredFileOutputStream類內(nèi)部使用一個ByteArrayOutputStream類對象來存儲數(shù)據(jù),當(dāng)寫入它里面的主體內(nèi)容的大小大于DiskFileUpload.setSizeThreshold方法設(shè)置的臨界值時,DeferredFileOutputStream類內(nèi)部創(chuàng)建一個文件輸出流對象來存儲數(shù)據(jù),并將前面寫入到ByteArrayOutputStream類對象中的數(shù)據(jù)轉(zhuǎn)移到文件輸出流對象中。這個文件輸出流對象關(guān)聯(lián)的文件是一個臨時文件,它的保存路徑由DiskFileUpload.setRepositoryPath方法指定。
結(jié)束語4.1收獲與總結(jié)在這持續(xù)了近乎三個星期的時間里,我又把以往所學(xué)的設(shè)計模式知識點復(fù)習(xí)了一遍。這種開放式的課程設(shè)計,充分調(diào)動了我的主觀能動性和自學(xué)的積極性,同時還讓我對以往所學(xué)知識的疏忽得以補(bǔ)充。在課程設(shè)計過程中遇到的一系列問題,也在同學(xué)的熱情幫助下,大豆得到了解決。比如:在分析FileUpload組件中使用的設(shè)計模式的時候,需要對這個組件中的一些類做逆向工程,然后得到類和接口之間的關(guān)系。由于之前課上講過對JDK的分析,所以一開始就對FileUpload組件做類似的處理,但是怎么都行不通,也是在請教了同學(xué),才知道只需要刪除每個Java文件里的包的信息就可以實現(xiàn),這才慢慢實現(xiàn)了逆向工程,得到了想要的類圖,對此組件的分析才能一步一步按部就班的往下走。雖然這次課程設(shè)計主要是分析FileUpload組件中使用的設(shè)計模式,但是我覺得這次課程設(shè)計所了解的設(shè)計模式比前邊上課的時候?qū)W習(xí)的知識點還要多,這次課設(shè)任務(wù)原則上是分析,其實就是對上學(xué)期所學(xué)知識點的做一個系統(tǒng)全面的復(fù)習(xí),然后再將所學(xué)的知識加以應(yīng)用。對于這個課題來說,就是找出這個組件中使用了哪些設(shè)計模式,并加以分析。作為一個軟件工程專業(yè)的學(xué)生,編程能力卻很渣,還不怎么愿意看先驅(qū)前輩們的代碼,為了這次的課程設(shè)計,還是耐著頭皮把這個組件中大部分類與接口的代碼閱讀了一遍,雖然并不怎么了解,但是看了好過不看。通過拜讀大師們的代碼,我發(fā)現(xiàn)我還是可以靜下心來認(rèn)真的做一件有意義的事情,此次課程設(shè)計,我發(fā)現(xiàn)了自身的不足,需要提升自我能力,用不恰當(dāng)?shù)脑捳f就是:“革命尚未成功,同志人需努力|”。課程設(shè)計是培訓(xùn)學(xué)生運(yùn)用本專業(yè)所學(xué)的理論知識和專業(yè)知識來分析解決實際問題的重要教學(xué)環(huán)節(jié),是對所學(xué)知識的復(fù)習(xí)和鞏固。因此,我們必須認(rèn)真、謹(jǐn)慎、踏實、一步一步的完成設(shè)計。通過課程設(shè)計,我了解到一些實際與理論之間的差異;通過課程設(shè)計不僅可以鞏固專業(yè)知識,為以后的工作打下了堅實的基礎(chǔ),而其還可以培養(yǎng)和熟練使用資料,運(yùn)用工具書的能力,把我們所學(xué)的課本知識與實踐結(jié)合起來,起到溫故而知新的作用。4.2參考文獻(xiàn)[1]劉偉,設(shè)計模式.北京:清華大學(xué)出版社,2011.[2]模式工程化實現(xiàn)及擴(kuò)展.設(shè)計模式C#版/王翔,孫遜著.北京:電子工業(yè)出版社,2012《機(jī)械制造工藝及夾具設(shè)計》課程設(shè)計任務(wù)書(MachineryManufacturingPlanningandFixtureDesign)系別機(jī)械工程系專業(yè)機(jī)制、模具、機(jī)電、數(shù)控班級姓名同組學(xué)生姓名課程設(shè)計題目一、設(shè)計的目的和要求(一)設(shè)計目的機(jī)械制造工藝及夾具設(shè)計課程設(shè)計是在學(xué)完了機(jī)械制造工藝及夾具設(shè)計,進(jìn)行了生產(chǎn)實習(xí)之后進(jìn)行的下一個教學(xué)環(huán)節(jié)。它一方面要求學(xué)生在設(shè)計中能初步學(xué)會綜合應(yīng)用過去所學(xué)過的全部課程,另外也為搞好畢業(yè)設(shè)計做一次綜合訓(xùn)練。學(xué)生應(yīng)當(dāng)通過機(jī)械制造工藝及夾具設(shè)計課程設(shè)計在下述各方面得到鍛煉:能熟練運(yùn)用機(jī)械制造工藝及夾具設(shè)計課程中的基本理論,正確地解決一個零件在加工中的定位,夾緊以及工藝路線合理安排等問題,保證零件的加工質(zhì)量。提高結(jié)構(gòu)設(shè)計能力。學(xué)生通過設(shè)計夾具的訓(xùn)練,應(yīng)當(dāng)掌握如何根據(jù)被加工零件的加工要求,設(shè)計出高效、省力、既經(jīng)濟(jì)合理,又能保證加工質(zhì)量的夾具來。學(xué)會使用手冊及圖表資料。掌握與本設(shè)計有關(guān)的各種資料的名稱出處,能夠做到熟練應(yīng)用。(二)設(shè)計的要求機(jī)械制造工藝及夾具設(shè)計課程設(shè)計題目一律定為:制訂xx零件的機(jī)械加工工藝。生產(chǎn)綱領(lǐng)為中批或大批生產(chǎn)。設(shè)計的要求包括如下幾個部分:1.零件——毛坯合圖一張2.機(jī)械加工工藝過程卡片一套3.夾具裝配總圖一張4.夾具零件圖一張5.課程設(shè)計說明書一份課程設(shè)計題目由指導(dǎo)老師選定發(fā)給學(xué)生。二、設(shè)計內(nèi)容及步驟對零件進(jìn)行工藝分析學(xué)生得到設(shè)計題目之后,應(yīng)首先對零件進(jìn)行工藝分析,其主要內(nèi)容包括:(1)零件的作用及零件圖上技術(shù)要求進(jìn)行分析。(2)對零件主要加工表面的尺寸、形狀及位置精度、表面光潔度及設(shè)計基準(zhǔn)等進(jìn)行分析。(3)零件的材質(zhì),熱處理及工藝性進(jìn)行分析。2.選擇毛坯的制造方式毛坯的選擇應(yīng)該以生產(chǎn)批量的大小,非加工表面的技術(shù)要求以及零件的復(fù)雜程度、技術(shù)要求的高低等幾方面綜合考慮。在通常情況下,應(yīng)主要以生產(chǎn)性質(zhì)來決定。正確的選擇毛坯制造方式,可以使得整個工藝過程經(jīng)濟(jì)合理。3.零件的機(jī)械加工工藝路線。(1)制訂工藝路線。在對零件進(jìn)行分析的基礎(chǔ)上,制定零件的工藝路線。對于比較復(fù)雜的零件,可以先考慮幾個加工方案,分析比較后,在從中選擇比較合理的加工方案。(2)選擇定位基準(zhǔn),進(jìn)行必要的工序尺寸計算。當(dāng)某工序定位基準(zhǔn),與設(shè)計基準(zhǔn)不符時,需對它的工序尺寸進(jìn)行換算。(3)選擇機(jī)床及工、夾、量、刃具。機(jī)床設(shè)備的選用應(yīng)當(dāng)既要保證加工質(zhì)量,又要經(jīng)濟(jì)合理。在成批生產(chǎn)的條件下,一般采用通用機(jī)床和專用工夾具。(4)加工余量及工序尺寸與公差的確定。根據(jù)工藝路線的安排,首先應(yīng)確定一個加工表面的各工序加工余量,其工序尺寸公差按經(jīng)濟(jì)精度確定,一個表面的總加工余量則為該表面各工序間加工余量之和。(5)切削用量的確定。在機(jī)床、刀具、加工余量等確定的基礎(chǔ)上,要求學(xué)生用公式計算一~二道工序的切削用量,其余各工序的切削用量可由上述手冊中查得。(6)畫毛坯圖。在加工余量確定的基礎(chǔ)上畫毛坯圖,要求毛坯輪廓用粗實線條繪制,零件的實體尺寸用雙點劃線繪出。比例取1:1,同時應(yīng)在圖上表出毛坯的尺寸、公差,技術(shù)要求,毛坯制造的分模面、圓角半徑和拔模斜度等(7)繪制零件的機(jī)械加工工藝卡片。將前述各項內(nèi)容及各工序簡圖,一并填入規(guī)定的工序卡片上。4.工藝裝備的結(jié)構(gòu)設(shè)計要求學(xué)生在課程設(shè)計中設(shè)計加工給定零件所必須的夾具1~2套。具體的設(shè)計內(nèi)容可根據(jù)加工需要由學(xué)生本人提出并經(jīng)指導(dǎo)教師同意后確定。結(jié)構(gòu)設(shè)計的具體步驟如下:(1)確定設(shè)計方案,繪制結(jié)構(gòu)原理示意圖。學(xué)生在確定夾具設(shè)計方案時應(yīng)當(dāng)遵循的原則是:確保加工質(zhì)量,結(jié)構(gòu)盡量簡單,操作省力高效,制造成本低廉。這四條原則如果單獨拿出來分析,有些是互相矛盾的,而設(shè)計者的任務(wù),就是要在設(shè)計的實踐中,綜合上述四條,通盤考慮,靈活運(yùn)用所學(xué)知識,結(jié)合實際情況,注意分析研究,考慮互相制約的各種因素,確定最合理的設(shè)計方案。(2)選擇定位元件,計算定位誤差。按照加工精度的高低,需要消除不定度的數(shù)目以及粗精加工的需要,按有關(guān)標(biāo)準(zhǔn)正確的選擇定位元件。選擇好定位元件之后,還應(yīng)對定位誤差進(jìn)行計算。計算結(jié)果如超差時,需要改變定位方法,以減少定位誤差,提高加工精度。有時甚至要從根本上改變工藝路線的安排,以保證零件的加工能順利進(jìn)行。(3)計算所需的夾緊力,設(shè)計夾緊機(jī)構(gòu)。為了保證零件裝夾的安全可靠,實際所需的夾緊力應(yīng)比理論夾緊力要大,即應(yīng)對理論夾緊力要以安全系數(shù)K。K的大小可由有關(guān)手冊中查得,一般K=1.5~2.5。應(yīng)該指出,由于加工方法,切削刀具以及裝夾方式千差萬別,夾緊力的計算在有些情況下是沒有現(xiàn)成的公式可以套用的,所以需要同學(xué)根據(jù)過去所學(xué)的理論進(jìn)行分析研究,以決定合理的計算方法。夾緊機(jī)構(gòu)的功用就是將動力源的力正確、有效地施加到工件上來。同學(xué)們可以根據(jù)具體情況,選擇并設(shè)計杠桿、螺旋、偏心、絞鏈……等不同的夾緊機(jī)構(gòu),并配合手動、氣動和液動的動力源,將夾具的設(shè)計工作逐步完善起來。(4)畫夾具裝配圖。要求按比例1:1的比例畫夾具裝配圖。被加工零件在夾具上的位置,要用雙點劃線表示,夾緊機(jī)構(gòu)應(yīng)處于“夾緊”的位置上。a)注意投影選擇,應(yīng)當(dāng)用最少的投影將夾具的結(jié)構(gòu)完全清楚的表達(dá)出來。因此在畫圖之前,應(yīng)當(dāng)仔細(xì)考慮各視圖的配置與安排。b)所設(shè)計的夾具,不但機(jī)構(gòu)要合理,結(jié)構(gòu)也應(yīng)當(dāng)合理。否則會影響工作甚至不能工作。c)要保證夾具與機(jī)床的相對位置及刀具與夾具的相對位置的正確性。即夾具上應(yīng)具備定位鍵及對刀裝置,這可在有關(guān)夾具設(shè)計手冊中得。d)運(yùn)動部件的運(yùn)動靈活,不能蹩勁和卡死。回轉(zhuǎn)工作臺或回轉(zhuǎn)定位部件應(yīng)有鎖緊裝置,不能在工作中自動松脫。e)夾具的裝配工藝性和夾具零件(尤其是夾具體)的可加工性要好。f)夾具的運(yùn)動零部件要有潤滑裝置,排屑要方便。g)零件的選材,尺寸公差的標(biāo)注以及總裝技術(shù)要求要合理。為便于審查零件的加工工藝性及夾具的裝配工藝性,從教學(xué)要求出發(fā),所有零部件不采用簡化法繪制。裝配圖的標(biāo)題欄如下所示序號名稱件數(shù)材料備注圖名比例圖號件數(shù)設(shè)計日期重量共張第張指導(dǎo)日期蘭州工業(yè)高等??茖W(xué)校審核日期5.編寫設(shè)計說明書學(xué)生在完成上述全部工作內(nèi)容后,應(yīng)將前述全部工作內(nèi)容依先后順序?qū)懗稍O(shè)計說明書一份。要求字跡工整,語言簡練,文字通順。說明書應(yīng)以十六開紙書寫,四周留有邊框,并裝訂成冊。三、進(jìn)度安排按教學(xué)計劃規(guī)定,機(jī)械制造工藝及夾具設(shè)計課程設(shè)計總學(xué)時數(shù)為2周,其進(jìn)度及時間大致分配如下:序號設(shè)計內(nèi)容天數(shù)(約占比例)1熟悉零件約占8%2選擇加工方案,確定工藝路線、填寫工藝過程綜合卡片約占30%3工藝裝備結(jié)構(gòu)設(shè)計約占45%4編寫課程設(shè)計說明書約占10%5準(zhǔn)備及答辯約占7%總計10四、設(shè)計成績的考核課程設(shè)計完成后的全部圖紙及說明書應(yīng)有設(shè)計者和指導(dǎo)教師的簽名。未經(jīng)指導(dǎo)教師簽字的設(shè)計,不能參加答辯。由指導(dǎo)教師組成答辯小組,設(shè)計者本人應(yīng)首先對自己的設(shè)計進(jìn)行5~10分鐘的講解,然后進(jìn)行答辯。每個學(xué)生答辯總時間一般不超過20分鐘。課程設(shè)計成績根據(jù)平時的工作情況,工藝分析深入程度,工藝裝備設(shè)計水平,圖紙的質(zhì)與量,獨立工作能力以及答辯情況綜合衡量,由答辯小組討論評定。答辯成績?yōu)榘俜种啤⒖嘉墨I(xiàn)1.張龍勛,《機(jī)械制造工藝學(xué)課程設(shè)計指導(dǎo)書》,機(jī)械工業(yè)出版社,2000,92.《機(jī)械制造工藝學(xué)簡明設(shè)計手冊》,機(jī)械工業(yè)出版社,2000,9,3.肖剛,《切削用量簡明手冊》,機(jī)械工業(yè)出版社,1999,104.肖繼德,《機(jī)床夾具設(shè)計》,機(jī)械工業(yè)出版社,1990,85.《組合機(jī)床設(shè)計手冊》,機(jī)械工業(yè)出版社,1989,76.孟憲棟,《機(jī)床夾具設(shè)計圖冊》,機(jī)械工業(yè)出版社,1990,8
范例1設(shè)計任務(wù)書機(jī)械制造工藝及夾具設(shè)計課程設(shè)計任務(wù)書題目:設(shè)計犁刀變速齒輪箱體零件的機(jī)械加工工藝規(guī)程及鉆N面6孔工序的專用夾具內(nèi)容:(1)零件——毛坯合圖1張(2)機(jī)械加工工藝規(guī)程卡片1套(3)夾具裝配總圖1張(4)夾具零件圖1張(5)課程設(shè)計說明書1份原始資料:該零件圖樣一張;生產(chǎn)綱領(lǐng)6000件/年;每日1班。班級學(xué)生指導(dǎo)教師教研室主任年月一、零件的分析(一)零件的作用犁刀變速齒輪箱體是旋耕機(jī)的一個主要零件。旋耕機(jī)通過該零件的安裝平面(即附圖1零件圖上的N面)與手扶拖拉機(jī)變速箱的后部相連,用兩圓柱銷定位,四個螺栓固定,實現(xiàn)旋耕機(jī)的正確聯(lián)接。N面上的4-Φ13mm孔即為螺栓聯(lián)接孔,2-Φ10F9孔為定位銷孔。如圖2-1所示,犁刀變速齒輪箱體2內(nèi)有一個空套在犁刀傳動軸上的犁刀傳動齒輪5,它與變速箱的一倒檔齒輪常嚙合(圖中未畫出)。犁刀傳動軸8的左端花鍵上套有嚙合套4,通過拔叉可以軸向移動。嚙合套4和犁刀傳動齒輪5相對的一面都有牙嵌,牙嵌結(jié)合時,動力傳給犁刀傳動軸8。其操作過程通過安裝在SΦ30H9孔中的操縱桿拔叉而得以實現(xiàn)。圖2-1犁刀變速齒輪箱傳動示意圖1-左臂殼體2-犁刀變速齒輪箱體3-操縱桿4-嚙合套5-犁刀傳動齒輪6-軸承7-右臂殼體8犁刀傳動軸9-鏈輪(二)零件的工藝分析由附圖1得知,其材料為HT200。該材料具有較高的強(qiáng)度、耐磨性、耐熱性及減振性,適用于承受較大應(yīng)力、要求耐磨的零件。該零件上的主要加工面為N面、R面、Q面和2-Φ80H7孔。N面的平面度0.05mm直接影響旋耕機(jī)與拖拉機(jī)變速箱的接觸精度及密封。2-Φ80H7孔的尺寸精度、同軸度Φ0.04mm,與N面的平行度0.07mm,與R及Q面的垂直度Φ0.1mm,以及R相對于Q面的平行度0.055mm,直接影響犁刀傳動軸對N面的平行度及犁刀傳動齒輪的嚙合精度、左臂殼體及右臂殼體孔軸線的同軸度等。因此,在加工它們時,最好能在一次裝夾下將兩面或兩孔同時加工出來。2-Φ10F9孔的尺寸精度、兩孔距尺寸精度mm以及mm對R面的平行度0.06mm,影響旋耕機(jī)與變速箱聯(lián)接時的正確定位,從而影響犁刀傳動齒輪與變速箱倒檔齒輪的嚙合精度。由參考文獻(xiàn)[1]中有關(guān)面和孔加工的經(jīng)濟(jì)精度及機(jī)床能達(dá)到的位置精度可知,上述技術(shù)要求是可以達(dá)到的,零件的結(jié)構(gòu)工藝性也是可行的。附圖1犁刀變速齒輪箱體二、確定毛坯、畫毛坯—零件合圖根據(jù)零件材料確定毛坯為鑄件。又由題目已知零件的生產(chǎn)綱領(lǐng)為6000件/年。通過計算,該零件質(zhì)量約為7kg。由參考文獻(xiàn)[5]表1-4、表1-3可知,其生產(chǎn)類型為大批生產(chǎn)。毛坯的鑄造方法選用砂型機(jī)器造型,又由于箱體零件的內(nèi)腔及2-Φ80mm孔均需鑄出,故還應(yīng)安放型芯。此外,為消除殘余應(yīng)力,鑄造后應(yīng)安排人工時效。參考文獻(xiàn)[1]表2.3-6,該種鑄件的尺寸公差等級CT為8-10級,加工余量等級MA為G級。故取CT為10級,MA為G級。鑄件的分型面選擇通過C基準(zhǔn)孔軸線,且與R面(或Q面)平行的面。澆冒口位置分別位于C基準(zhǔn)孔凸臺的兩側(cè)。參考文獻(xiàn)[1]表2.3-5,用查表法確定各表面的總余量如表2-1所示。表2-1各加工表面總余量加工表面基本尺寸(mm)加工余量等級加工余量數(shù)值(mm)說明R面168G4底面,雙側(cè)加工(取下行數(shù)據(jù))Q面168H5頂面降1級,雙側(cè)加工N面168G5側(cè)面,單側(cè)加工(取下行數(shù)據(jù))凸臺面106G4側(cè)面單側(cè)加工2-Φ80mm孔80H3孔降1級,雙側(cè)加工由參考文獻(xiàn)[1]表2.3-9可得鑄件主要尺寸的公差,如表2-2所示。表2-2主要毛坯尺寸及公差(mm)主要面尺寸零件尺寸總余量毛坯尺寸公差CTN面輪廓尺寸168--1684N面輪廓尺寸1684+51774N面距Φ80mm孔中心尺寸465512.8凸臺面距Φ80mm孔中心尺寸100+641103.62-Φ80mm孔Φ803+3Φ743.2三、工藝規(guī)程設(shè)計(一)定位基準(zhǔn)的選擇精基準(zhǔn)的選擇:犁刀變速齒輪箱體的N面和2-Φ10F9孔既是裝配基準(zhǔn),又是設(shè)計基準(zhǔn),用它們作精基準(zhǔn),能使加工遵循“基準(zhǔn)重合”的原則,實現(xiàn)箱體零件“一面兩孔”的典型定位方式;其余各面和孔的加工也能用它定位,這樣使工藝路線遵循了“基準(zhǔn)統(tǒng)一”的原則。此外,N面的面積較大,定位比較穩(wěn)定,夾緊方案也比較簡單、可靠,操作方便。粗基準(zhǔn)的選擇:考慮到以下幾點要求,選擇箱體零件的重要孔(即2-Φ80mm孔)的毛坯孔與箱體內(nèi)壁作粗基準(zhǔn):第一,在保證各加工面均有加工余量的前提下,使重要孔的加工余量盡量均勻;第二,裝入箱體內(nèi)的旋轉(zhuǎn)零件(如齒輪、軸套等)與箱體內(nèi)壁有足夠的間隙;此外還應(yīng)能保證定位準(zhǔn)確、夾緊可靠。最先進(jìn)行機(jī)械加工的表面是精基準(zhǔn)N面和2-Φ10F9孔,這時可有兩種定位夾緊方案:方案一用一浮動圓錐銷插入一Φ80mm毛坯孔中限制二個自由度;用三個支承釘支承在與Q面相距32mm并平行于Q面的毛坯上,限制三個自由度;再以N面本身找正限制一個自由度。這種方案適合于大批量生產(chǎn)類型中,在加工N面及其表面上各孔和凸臺面極其各孔的自動線上采用隨行夾具時用。方案二用一根兩頭帶反錐形(一端的反錐可以取下,以便卸裝工件)的心棒插入2-Φ80mm毛坯孔中并加緊。粗加工N面時。將心棒至于兩頭V型架上限制四個自由度,再以N面本身找正限制一個自由度。這種方案雖要安裝一個心棒,但由于下一道工序(鉆擴(kuò)鉸2-Φ10F9孔)還要用一根心棒定位,即將心棒至于兩頭的U型槽中限制兩各自由度,故本道工序可不用將心棒數(shù)量就少,因而該方案是可行的。(二)制定工藝路線根據(jù)各表面加工要求和各種加工方法能達(dá)到的經(jīng)濟(jì)精度。確定各表面的加工方法如下:N面:粗車—精銑;R面和Q面:粗銑—精銑;凸臺面:粗銑;2-Φ80mm孔:粗鏜—精鏜;7級—9級精度餓未鑄出孔:鉆—擴(kuò)—鉸;螺紋孔;鉆孔—攻螺紋。因R面和Q面有較高的平行度要求,2-Φ80mm孔較高的同軸度要求,故他們的加工宜采用工序集中的原則,即分別在一次裝夾下將兩面或兩孔同時加工出來,以保證其精度。根據(jù)先面后孔,先主要表面后次要表面和先粗加工后精加工的原則,將N面、R面、Q面及2-Φ80mm孔的粗加工放在前面,精加工放在后面,每一階段中又先加工N面后在鏜2-Φ80mm孔。R面及Q面上的Φ8N8孔及4-M12螺紋孔等次要表面放在最后加工。初步擬訂加工工藝路線如下:工序號工序內(nèi)容鑄造時效涂底漆10粗銑N面20鉆擴(kuò)鉸2-Φ10F9孔(尺寸留精鉸余量),孔口倒角1×45°30粗銑凸臺面40粗銑R面及Q面50粗鏜2-80mm孔,孔口倒角1×45°60鉆Φ20mm孔70精銑N面80精鉸2-Φ10F9孔90精銑R面及Q面100精鏜2-80H7孔110擴(kuò)鉸SΦ30H9球形孔,鉆4-M6螺紋底孔,孔口倒角1×45°,攻螺紋4-M6120鉆4-Φ13mm孔130刮4-Φ22mm平面140鉆8-M12螺紋底孔,孔口倒角1×45°,鉆鉸2-Φ8N8,孔口倒角1×45°,攻螺紋8-M12150檢驗160入庫上述方案遵循了工藝路線擬訂的一般原則,但某些工序有些問題還值得進(jìn)一步討論。如粗車N面,因工件和夾具的尺寸較大,在臥式車床上加工時,它們的慣性較大,平衡較困難;又由于N面不是連續(xù)的圓環(huán)面,車削中出現(xiàn)斷續(xù)切削,容易引起工藝系統(tǒng)的振動,故改用銑削加工。工序40應(yīng)在工序30前完成,使R面和Q面在粗加工后有較多的時間進(jìn)行自然時效,減少工件受力變形和受熱變形對2-Φ80mm孔加工精度的影響。精銑N面后,N面與2-Φ10F9孔的垂直度誤差難以通過精鉸孔糾正,故對這兩孔的加工改為擴(kuò)鉸,并在前面的工序中預(yù)留足夠的余量。4-Φ13mm孔盡管是次要表面,但在鉆擴(kuò)鉸2-Φ10F9孔時,也將4-Φ13mm孔鉆出,可以節(jié)約一臺鉆床和一套專用夾具,能降低生產(chǎn)成本,而且工時也不長。同理,鉆孔工序也應(yīng)合并到擴(kuò)鉸球形孔工序中。這組孔在精鏜孔后加工,容易保證其軸線與2-Φ80H7孔軸線的位置精度。工序140中工步太多,工時太長,考慮到整個生產(chǎn)線的節(jié)拍,應(yīng)將8-M12螺孔的攻螺紋作另一道工序。修改后的工藝線路如下:序號工序內(nèi)容簡要說明鑄造時效消除內(nèi)應(yīng)力涂底漆防止生銹10粗銑N面先加工基準(zhǔn)面20鉆擴(kuò)鉸2-Φ10F9孔至Φ9F9,孔口倒角1×45°鉆4-Φ13留精擴(kuò)鉸余量30粗銑R面及Q面先加工面40銑凸臺面后加工孔50粗鏜2-Φ80孔,孔口倒角1×45°粗加工結(jié)束60粗銑N面精加工開始70粗?jǐn)U鉸2-Φ10F9孔,并提高精度至2-Φ10F7提高工藝基準(zhǔn)精80精銑R面及Q面先加工面90精鏜2-80H7孔后加工孔100鉆2-Φ孔,擴(kuò)鉸SΦ30H9球形孔,鉆4-M6螺紋底孔,孔口倒角1×45°,攻螺紋4-M6-6H次要表面在后面加工110刮4-Φ22mm平面120鉆8-M12螺紋底孔,孔口倒角1×45°,鉆鉸2-Φ8N8,孔口倒角1×45°130攻螺紋8-M12-6H工序分散,平衡節(jié)拍140檢驗150入庫工藝文件詳見附表1、附表2。四、夾具設(shè)計本次設(shè)計的夾具為第20道工序——鉆擴(kuò)鉸2-Φ10F9孔、孔口倒角1×45°,鉆4-Φ13mm孔夾具。該夾具適用于Z3025搖臂鉆。確定設(shè)計方案這道工序所加工的孔均在N面上,且與N面垂直。按照基準(zhǔn)重合原則并考慮到目前只有N面經(jīng)過加工,為避免重復(fù)使用粗基準(zhǔn),應(yīng)以N面定位。又為避免鉆頭引偏,4-Φ13mm孔應(yīng)從N面鉆孔,且2-Φ9F9孔是盲孔,也只能從N面加工,這就要求鉆孔時N面必須朝上。這給裝夾工件帶來了一定的困難。從對工件的結(jié)構(gòu)形狀分析,若工件以N面朝下放置在支承板上,定位夾緊都比較穩(wěn)定,可靠,也容易實現(xiàn)。待夾緊后將夾具反轉(zhuǎn)180°,N面就能朝上,滿足加工要求。這個翻轉(zhuǎn)過程可以借助于標(biāo)準(zhǔn)的臥式回轉(zhuǎn)工作臺來實現(xiàn)。夾具以夾具體安裝面和定位孔、定位銷定位,用T型槽螺栓連接。工件以N面在夾具上定位,限制了三個自由度,其余三個自由度也必須限制。用哪種方案合理呢?方案1在2-80H7的B孔內(nèi)插入一削邊銷限制一個移動自由度;再以B孔內(nèi)側(cè)面用兩個支承釘限制一個移動自由度和一個轉(zhuǎn)動自由度。這種定位方案從定位原理上分析是合理的,夾具結(jié)構(gòu)也很簡單。但由于B孔和其內(nèi)側(cè)面均為毛坯面,又因結(jié)構(gòu)原因,夾緊力不宜施加在這樣的定位元件上,故工件定位面和定位元件之間很可能會接觸不好,使定位不穩(wěn)定。這個方案不宜采用。方案2見附圖2,用一根兩頭帶反錐形的心棒插入2-Φ80mm毛坯孔中并夾緊。將心棒兩端的軸頸放入兩U形槽中定位,限制一個移動自由度和一轉(zhuǎn)動自由度。此外以2-80Φ毛坯孔的兩內(nèi)側(cè)面在自定心結(jié)構(gòu)上定位,限制一個移動自由度。這種方案定位可靠,夾緊也很方便,用一鉸鏈壓板壓在工件R80mm外圓上即可。本道工序與前道粗銑N面共用一根心棒,這根“隨行心棒”在銑完N后立即連同工件一同轉(zhuǎn)入本道工序,其間不得重新卸裝心棒,待本道工序加工完后,方可卸下心棒,否則將違背粗基準(zhǔn)一般只用一次的原則而影響N面各孔與2-Φ80mm孔軸線的位置精度。本道工序的夾具因要回轉(zhuǎn),若采用氣動或液壓夾緊,則氣管或油管會妨礙操作,故選用手動夾緊,使夾具簡單,操作方便。附圖2夾具體零件圖參考文獻(xiàn)1李洪主編。機(jī)械加工工藝手冊。北京:北京出版社,19902孟少農(nóng)主編。機(jī)械加工工藝手冊第一卷。北京:機(jī)械工業(yè)出版社,19913東北重型機(jī)械學(xué)院,洛陽工學(xué)院,第一汽車制造廠職工大學(xué)編。機(jī)床夾具設(shè)計手冊。上??茖W(xué)技術(shù)出版社,19904王紹俊主編。機(jī)械制造工藝設(shè)計手冊。北京:機(jī)械工業(yè)出版社,19975鄭修本,馮冠大主編。機(jī)械制造工藝學(xué)。北京:機(jī)械工業(yè)出版社,19916劉友才,肖繼德主編。機(jī)床夾具設(shè)計。北京:機(jī)械工業(yè)出版社,1991零件圖工藝過程卡附表1機(jī)械加工工藝過程卡片機(jī)械加工工序卡片產(chǎn)品型號零(部)件圖號產(chǎn)品名稱旋耕機(jī)零(部)件名稱犁刀變速齒輪箱體共(2)頁第(1)頁材料牌號HT200毛坯種類鑄件毛坯外型尺寸177mm×168mm×150mm每毛坯可制件數(shù)1每臺件數(shù)1備注工序號工序名稱工序內(nèi)容車間工段設(shè)備工藝裝備工時準(zhǔn)終單件鑄造鑄時效熱涂底漆表10粗銑N面金工X52K專用銑夾具20鉆擴(kuò)鉸2-Ф10F9孔至2-Ф9F9,孔口倒角1×45°金工Z3050專用鉆夾具鉆4-Ф13mm孔30粗銑R及Q面金工組合機(jī)床專用銑夾具描圖40銑凸臺面金工X52K專用銑夾具50粗鏜2-Ф80mm孔,孔口倒角1×45°金工組合機(jī)床專用鏜夾具60精銑N面金工X62W專用銑夾具描校70精擴(kuò)鉸2-Ф10F9孔至2-Ф10F7金工Z3025專用鉆夾具80精銑R及Q面金工組合機(jī)床專用銑夾具90精鏜2-Ф80H7孔金工組合機(jī)床專用鏜夾具底圖號100鉆Ф20mm孔,擴(kuò)鉸Ф30H9球形孔,鉆4-M6螺紋底孔金工Z3025專用鉆夾具并孔口倒角1×45°,攻螺紋4-M6-6H裝訂號110刮4-Ф22mm平面金工Z3025專用鉆夾具120鉆8-M12螺紋底孔并孔口倒角1×45°,鉆、鉸2-Ф8N8,金工Z3025專用鉆夾具孔口倒角1×45°設(shè)計(日期)審核(日期)標(biāo)準(zhǔn)化(日期)會簽(日期)標(biāo)記處數(shù)更改文件號簽字日期標(biāo)記處數(shù)更改文件號簽字日期附表1(續(xù))機(jī)械加工工序卡片產(chǎn)品型號零(部)件圖號產(chǎn)品名稱旋耕機(jī)零(部)件名稱犁刀變速齒輪箱體共(2)頁第(2)頁材料牌號HT200毛坯種類鑄件毛坯外型尺寸177mm×168mm×150mm每毛坯可制件數(shù)1每臺件數(shù)1備注工序號工序名稱工序內(nèi)容車間工段設(shè)備工藝裝備工時準(zhǔn)終單件130攻螺紋8-M12-6H金工Z3025專用攻螺紋夾具140檢驗檢150人庫描圖描校底圖號裝訂號,設(shè)計(日期)審核(日期)標(biāo)準(zhǔn)化(日期)會簽(日期)標(biāo)記處數(shù)更改文件號簽字日期標(biāo)記處數(shù)更改文件號簽字日期.附表2機(jī)械加工工序卡片機(jī)械加工工序卡片產(chǎn)品型號零(部)件圖號產(chǎn)品名稱旋耕機(jī)零(部)件名稱犁刀變速齒輪箱體共(13)頁第(1)頁車間工序號工序名稱材料牌號10粗銑N面HT200毛坯種類毛坯外型尺寸每毛坯可制作件數(shù)每臺件數(shù)鑄件177mm×168mm×150mm11設(shè)備名稱設(shè)備型號設(shè)備編號同時加工件數(shù)立式銑床X52K1夾具編號夾具名稱切削液粗銑N面夾具工位器具編號工位器具名稱工序工時準(zhǔn)終單件工步號工步內(nèi)容工藝裝備主軸轉(zhuǎn)速r/min切削速度m/min進(jìn)給量mm/r切削深度mm進(jìn)給次數(shù)工步工時機(jī)動輔助1粗銑N面專用銑夾具11874.123.51描圖隨行心棒Ф200mm可轉(zhuǎn)位面銑刀描校底圖號裝訂號設(shè)計(日期)審核(日期)標(biāo)準(zhǔn)化(日期)會簽(日期)標(biāo)記處數(shù)更改文件號簽字日期標(biāo)記處數(shù)更改文件號簽字日期范例2設(shè)計任務(wù)書課程設(shè)計舉例一、零件的分析(一)零件的作用題目所給定的零件是解放牌汽車底盤傳動軸上的萬向節(jié)滑動叉(見附圖1),它位于傳動軸的端部。主要作用一是傳遞扭矩,使汽車獲得前進(jìn)的動力;二是當(dāng)汽車后橋鋼板彈簧處在不同的狀態(tài)時,由本零件可以調(diào)整傳動軸的長短及其位置。零件的兩個叉頭部位上有兩個Φ㎜的孔,用以安裝滾針軸承并與十字軸相連,起萬向聯(lián)軸節(jié)的作用。零件Φ65㎜外圓內(nèi)為Φ50㎜花鍵孔與傳動軸端部的花鍵軸相配合,用于傳遞動力之用。(二)零件的工藝分析萬向節(jié)滑動叉共有兩組加工表面,它們之間有一定的位置要求?,F(xiàn)分析如下:1.以Φ39㎜孔為中心的加工表面這一組加工表面包括:兩個Φ㎜的孔及其倒角,尺寸為㎜的與兩個孔Φ㎜相垂直的平面,還有在平面上的四個M8螺孔。其中,主要加工表面為Φ㎜的兩用個孔。2.以Φ50㎜花鍵孔為中心的加工表面這一組加工表面包括:Φ50㎜十六齒方齒花鍵孔,Φ55㎜階梯孔,以及Φ65㎜外圓
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)綜合體招商運(yùn)營風(fēng)險分析及2025年社會穩(wěn)定風(fēng)險防范策略報告
- 新解讀《GB-T 39058 - 2020農(nóng)產(chǎn)品電子商務(wù)供應(yīng)鏈質(zhì)量管理規(guī)范》
- 中小學(xué)2025年《秋季軍訓(xùn)》工作方案 合計3份
- 2025年小學(xué)安全教育日考試題及答案
- 江蘇省高考數(shù)學(xué)二輪復(fù)習(xí) 專題三 解析幾何 3.2 大題考法-直線與圓課件-人教版高三全冊數(shù)學(xué)課件
- 高考數(shù)學(xué)一輪復(fù)習(xí) 9.9 用樣本估計總體課件 理-人教版高三全冊數(shù)學(xué)課件
- 2025年上海新高一英語自學(xué)專項提升:高中題型之語法填空考向探究(初高考點差異)
- 2026年高考語文一輪復(fù)習(xí)文學(xué)類文本教考銜接之小說閱讀
- 2025中考數(shù)學(xué)押題預(yù)測卷(湖北卷)含答案解析
- 2026年中考物理高頻考點復(fù)習(xí):簡單機(jī)械 講義(含練習(xí)題及答案)
- 2025年保密教育線上培訓(xùn)考試試題庫及答案(共19套)
- 材料性能學(xué)(第2版)付華課件1-彈性變形
- GB/T 6495.9-2006光伏器件第9部分:太陽模擬器性能要求
- GB/T 602-2002化學(xué)試劑雜質(zhì)測定用標(biāo)準(zhǔn)溶液的制備
- 藥用植物學(xué)試題與答案
- 江西省贛州市于都縣2022-2023學(xué)年九年級化學(xué)第一學(xué)期期中監(jiān)測試題含解析
- 新冠核酸檢測實驗室PCR管八聯(lián)管濾芯吸頭等耗材質(zhì)檢和儲存程序
- 預(yù)防出生缺陷PPT
- ROEDERS (羅德斯CNC)公司內(nèi)部培訓(xùn)手冊
- 通止規(guī)、環(huán)通止規(guī)檢查記錄表
- 模版協(xié)議認(rèn)購協(xié)議東方國際廣場七號樓購房確認(rèn)書(最新修改)
評論
0/150
提交評論