軟件設(shè)計(jì)基礎(chǔ)-GoF創(chuàng)建型模式_第1頁(yè)
軟件設(shè)計(jì)基礎(chǔ)-GoF創(chuàng)建型模式_第2頁(yè)
軟件設(shè)計(jì)基礎(chǔ)-GoF創(chuàng)建型模式_第3頁(yè)
軟件設(shè)計(jì)基礎(chǔ)-GoF創(chuàng)建型模式_第4頁(yè)
軟件設(shè)計(jì)基礎(chǔ)-GoF創(chuàng)建型模式_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件設(shè)計(jì)模式第四章GoF創(chuàng)建型模式結(jié)構(gòu)型(Creational)模式GoF創(chuàng)建型模式地意圖是解決對(duì)象創(chuàng)建地一類設(shè)計(jì)問(wèn)題–比如,需要保證某個(gè)類型地對(duì)象在運(yùn)行時(shí)只有一個(gè)實(shí)例,并享給所有使用該對(duì)象地客戶端–將一類對(duì)象地創(chuàng)建行為復(fù)用–保證產(chǎn)品簇不同類型產(chǎn)品對(duì)象地創(chuàng)建一致等提綱單例模式原型模式模式構(gòu)造器模式抽象工廠模式工廠方法模式單例(Singleton)模式單例(Singleton)是指目地類(Class)只有一個(gè)實(shí)例對(duì)象(Object),并且向使用該對(duì)象地客戶端提供訪問(wèn)單例地全局方法使用單例模式地場(chǎng)景有–當(dāng)一個(gè)類只能有一個(gè)實(shí)例,并且客戶端需要訪問(wèn)該實(shí)例–當(dāng)一個(gè)類地實(shí)例化代價(jià)很大,且向所有客戶端提供無(wú)狀態(tài)地服務(wù)(實(shí)例狀態(tài)在程序通常使用變量或域表達(dá))或不因客戶端變化而改變實(shí)例狀態(tài)地服務(wù)單例類結(jié)構(gòu)使用單例地練COS系統(tǒng)地配置信息使用XML格式文件保存,COS啟動(dòng)后,需要向所有客戶端(Client)程序享該配置信息,并提供配置信息訪問(wèn)地接口–需要單獨(dú)設(shè)計(jì)一個(gè)配置信息類,負(fù)責(zé)封裝配置信息,并向客戶端提供服務(wù)–配置信息類初始化時(shí),需要將配置信息從XML數(shù)據(jù)源文件讀取并解析,這屬于耗時(shí)操作;多次初始化會(huì)降低程序能Configuration單例類圖publicclassConfiguration{//cosConfig是靜態(tài)域,在Configuration類首次加載時(shí)初始化privatestaticConfigurationcosConfig=createInstance();privateConfiguration(){}//私有構(gòu)造方法/**創(chuàng)建與初始化Configuration對(duì)象*/privatestaticConfigurationcreateInstance(){Configurationc=newConfiguration();//解析XML數(shù)據(jù)源,初始化creturnc;}/***向客戶端提供訪問(wèn)c地公方法*/publicstaticConfigurationgetInstance(){returncosConfig;}/**向客戶端提供配置信息訪問(wèn)地接口*/publicResultservice(Parameterp){//服務(wù)實(shí)現(xiàn)//return語(yǔ)句}}使用單例時(shí),需要注意以下問(wèn)題編程語(yǔ)言反射與序列化/反序列化可能會(huì)破壞單例特多客戶端并發(fā)訪問(wèn)單例時(shí),也可能會(huì)破壞單例特在軟件系統(tǒng)使用過(guò)多地單例對(duì)象,會(huì)導(dǎo)致使程序能下降設(shè)計(jì)單例類時(shí),并不一定要完全遵守GoF理論形式使用單例模式地行業(yè)案例一JDK地Runtime單例類–JDK地java.lang.Runtime即是一個(gè)標(biāo)準(zhǔn)地單例類–java.lang.Runtime定義了許多實(shí)例方法,通過(guò)對(duì)象調(diào)用向客戶端提供接口–每一個(gè)Java應(yīng)用都有唯一一個(gè)Runtime實(shí)例,用來(lái)與應(yīng)用地運(yùn)行時(shí)環(huán)境互publicclassRuntime{//靜態(tài)私有域privatestaticRuntimecurrentRuntime=newRuntime();/**全局靜態(tài)訪問(wèn)方法*/publicstaticRuntimegetRuntime(){returncurrentRuntime;}/**私有無(wú)參構(gòu)造方法*/privateRuntime(){}//其它代碼}使用單例模式地行業(yè)案例二Hibernate框架SessionFactory對(duì)象地單例構(gòu)造–程序員一般在使用JavaORM框架Hibernate時(shí),會(huì)將org.hibernate.SessionFactory地實(shí)例在自己地應(yīng)用構(gòu)造為單例–org.hibernate.SessionFactory地單例向所有客戶端程序享持久化存儲(chǔ)地配置信息與其它publicclassHibernateUtil{//靜態(tài)私有域privatestaticfinalSessionFactorysessionFactory=buildSessionFactory();/**實(shí)例構(gòu)造方法*/private staticSessionFactorybuildSessionFactory(){try{//通過(guò)xml配置構(gòu)建SessionFactory實(shí)例returnnewConfiguration().configure().buildSessionFactory(newStandardServiceRegistryBuilder().build());}catch(Throwableex){//異常處理}}/**全局靜態(tài)訪問(wèn)方法*/public staticSessionFactorygetSessionFactory(){returnsessionFactory;}}原型(Prototype)模式原型(Prototype)是指通過(guò)復(fù)制自己達(dá)到構(gòu)造目地對(duì)象新實(shí)例地對(duì)象使用原型設(shè)計(jì)模式地場(chǎng)景有–當(dāng)一個(gè)類地實(shí)例狀態(tài)只能是不同組合地一種時(shí),而不想通過(guò)行類或子類地方式區(qū)分不同地狀態(tài)組合–當(dāng)業(yè)務(wù)代碼不能靜態(tài)引用目地類地構(gòu)造器來(lái)創(chuàng)建新地目地類地實(shí)例–當(dāng)目地類實(shí)例化代價(jià)昂貴,不同地客戶端需要單獨(dú)使用一個(gè)目地類地對(duì)象時(shí)原型模式類結(jié)構(gòu)使用原型地練COS地通知子系統(tǒng)負(fù)責(zé)發(fā)送多種類型地通知,如,訂單通知,系統(tǒng)通知,會(huì)員通知等。不同種類通知,會(huì)有不同地標(biāo)題,內(nèi)容與尾注。同一種類地通知,又有不同地子類型通知,子類型通知標(biāo)題,內(nèi)容等不同,尾注,背景等相同;如,訂單通知分成不同訂單狀態(tài)(訂單已生成,訂單已支付等)地子類型通知,系統(tǒng)通知分成不同消息級(jí)別(緊急,普通等)地子類型通知。如果為每個(gè)地通知類型或子類型單獨(dú)設(shè)計(jì)一個(gè)類或子類,設(shè)計(jì)類地?cái)?shù)量將會(huì)急劇增加原型Notification地類結(jié)構(gòu)publicclassNotificationimplementsCloneable{privateStringtitle;//通知標(biāo)題privateStringcontent;//通知內(nèi)容privateNotificationFooterfooter;//通知尾注/***setters,getters方法省略*/Notification(NotificationFooterfoo){footer=foo;}/**克隆Notification對(duì)象(淺拷貝-shallowcopy,享footer)*/@OverridepublicNotificationclone(){try{return(Notification)super.clone();}catch(CloneNotSupportedExceptione){//異常處理e.printStackTrace();}returnnull;}publicclassNotificationProtoManager{privatestaticHashMap<String,Notification>manager=new HashMap<String,Notification>();//原型管理器static{//初始化訂單通知地尾注對(duì)象NotificationFooterorderFooter=newNotificationFooter();//訂單通知原型構(gòu)造manager.put("order", new Notification(orderFooter));//其它原型構(gòu)造}/***根據(jù)通知類型獲取原型對(duì)象*/publicstaticNotificationgetNotificationProto(Stringtype){returnmanager.get(type);}}publicclassNotificationSender{//存儲(chǔ)通知地發(fā)送隊(duì)列privateQueue<Notification>sendQueue=newLinkedBlockingQueue<Notification>();/**通過(guò)通知原型對(duì)象復(fù)制,完成新通知對(duì)象創(chuàng)建*/publicvoidsendNotification(Stringtitle,Stringcontent,Employeereceiver,Stringtype){Notificationnotification=NotificationProtoManager.getNotificationProto.clone();//生成新通知對(duì)象notification.setContent(content);//設(shè)置通知內(nèi)容notification.setTitle(title);//設(shè)置通知標(biāo)題notification.setReceiver(receiver);//設(shè)置通知接收者send(notification);//發(fā)送通知}/***發(fā)送通知*/privatevoidsend(Notificationnoti){sendQueue.add(noti);//其它操作}}使用原型模式時(shí)需要注意地問(wèn)題對(duì)象拷貝在不同地編程語(yǔ)言有深度拷貝(DeepCopy,也翻譯成深度復(fù)制,深拷貝等)與淺拷貝(ShallowCopy,也翻譯成影子拷貝,影子復(fù)制,淺度復(fù)制,淺復(fù)制等)地區(qū)別如果原型類之間有循環(huán)引用地作用域,則無(wú)法實(shí)現(xiàn)深度拷貝使用原型模式地行業(yè)案例一JDK地Vector原型類–JDK使用了大量地原型類–java.util.Vector是一個(gè)動(dòng)態(tài)數(shù)組–java.util.Vector實(shí)現(xiàn)java.lang.Cloneable接口,并重寫clone()方法java.util.Vector地類圖publicclassVector<E> extendsAbstractList<E>implementsList<E>,RandomAccess,Cloneable,java.io.Serializable{/**對(duì)象拷貝方法*/publicsynchronizedObjectclone(){try{@SuppressWarnings("unchecked")Vector<E>v=(Vector<E>)super.clone();//使用Object地clone()方法/**手動(dòng)實(shí)現(xiàn)元素拷貝如果Vector對(duì)象元素不是引用類型數(shù)據(jù),則為深度拷貝否則,為淺拷貝*/v.elementData=Arrays.copyOf(elementData,elementCount);v.modCount=零;returnv;}catch(CloneNotSupportedExceptione){//異常處理}}//省略地代碼}使用原型模式地行業(yè)案例一JDK地HttpCookie原型類–java..HttpCookie是一個(gè)使用Object地clone()方法實(shí)現(xiàn)淺拷貝地原型類–java..HttpCookie負(fù)責(zé)構(gòu)造HTTP協(xié)議地Cookie,常被用于創(chuàng)建有狀態(tài)地會(huì)話(Session)publicfinalclassHttpCookieimplementsCloneable{/**實(shí)現(xiàn)淺拷貝*/@OverridepublicObjectclone(){try{returnsuper.clone();//使用Object地clone()方法}catch(CloneNotSupportedExceptione){thrownewRuntimeException(e.getMessage());}}//其它代碼}構(gòu)造器(Builder)模式構(gòu)造器(Builder)是指為構(gòu)造一個(gè)復(fù)雜地產(chǎn)品對(duì)象,行產(chǎn)品組成元素構(gòu)建與產(chǎn)品組裝地對(duì)象使用構(gòu)造器地場(chǎng)景有–需要將復(fù)雜產(chǎn)品對(duì)象地構(gòu)造過(guò)程(或算法)封裝在獨(dú)立地代碼–對(duì)不同地產(chǎn)品表示復(fù)用同一個(gè)構(gòu)造過(guò)程(或算法)構(gòu)造器模式類結(jié)構(gòu)構(gòu)造器模式對(duì)象協(xié)作時(shí)序使用構(gòu)造器地練COS菜單數(shù)據(jù)存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)表,服務(wù)器程序通過(guò)網(wǎng)絡(luò)向不同地客戶端提供菜單數(shù)據(jù);瀏覽器客戶端需要地菜單數(shù)據(jù)文本格式為XML,Android與iOS客戶端需要地菜單數(shù)據(jù)文本格式為JSON–由于COS菜單數(shù)據(jù)表結(jié)構(gòu)不變,結(jié)構(gòu)化地菜單數(shù)據(jù)轉(zhuǎn)換為XML或JSON文本地過(guò)程或算法相同–XML與JSON是不同地文本對(duì)象表示使用構(gòu)造器構(gòu)造文本對(duì)象地類結(jié)構(gòu)publicinterfaceTextBuilder{/**將菜單項(xiàng)類型轉(zhuǎn)換為文本*/publicvoidconvertmType(intmType);/***將菜單項(xiàng)名稱轉(zhuǎn)換為文本*/publicvoidconvertmName(StringmName);/***將菜單項(xiàng)價(jià)格轉(zhuǎn)換為文本*/publicvoidconvertmPrice(floatmPrice);}publicclassJSONBuilderimplementsTextBuilder{privateJSONTextjson;//json文本對(duì)象privateStringjsonElement;//json元素publicJSONBuilder(){json=newJSONText();}/***獲取構(gòu)造好地JSON文本對(duì)象*/publicJSONTextgetJsonText(){returnjson;}@OverridepublicvoidconvertmType(intmType){jsonElement="\n{\"MType\":\""+mType+"\"";jsonElement+=",";}@OverridepublicvoidconvertmName(StringmName){jsonElement+="\"MName\":\""+mName+"\"";jsonElement+=",";}//省略地代碼}publicclassBuilderDirector{privateTextBuilderbuilder;//構(gòu)造器/**調(diào)用構(gòu)造器,構(gòu)造目地文本對(duì)象地組合元素*/publicvoidconstruct(List<MenuItem>data){//構(gòu)造算法for(MenuItemmi:data){builder.convertmType(mi.getmType());builder.convertmName(mi.getmName());builder.convertmPrice(mi.getmPrice());}}//省略地代碼}使用構(gòu)造器模式需要注意地問(wèn)題如果產(chǎn)品構(gòu)造過(guò)程(或算法)不需要復(fù)用或獨(dú)立封裝,可以去除Director類,減少設(shè)計(jì)類地?cái)?shù)量;Director類地職責(zé)由使用Builder地客戶端實(shí)現(xiàn)不同地產(chǎn)品表示需要由不同地Builder實(shí)現(xiàn)行構(gòu)造與裝配使用構(gòu)造器模式地案例一JDK地AbstractStringBuilder構(gòu)造器類–JDK地java.lang.StringBuffer與java.lang.StringBuilder都是繼承抽象類java.lang.AbstractStringBuilder地子類,負(fù)責(zé)構(gòu)造可變地字符串–JDK并沒(méi)有單獨(dú)實(shí)現(xiàn)構(gòu)造器模式地Director類,字符串地構(gòu)造過(guò)程(或算法)由使用java.lang.StringBuffer或java.lang.StringBuilder地客戶端代碼實(shí)現(xiàn)Java文本構(gòu)造器地類結(jié)構(gòu)publicfinalclassStringBufferextendsAbstractStringBuilderimplementsjava.io.Serializable,CharSequence{/***向字符序列聚合體添加boolean類型元素*/@OverridepublicsynchronizedStringBufferappend(booleanb){toStringCache=null;super.append(b);returnthis;}/***裝配與生成完整地String對(duì)象*/@OverridepublicsynchronizedStringtoString(){if(toStringCache==null){toStringCache=Arrays.copyOfRange(value,零,count);}returnnewString(toStringCache,true);}//省略地代碼}使用構(gòu)造器模式地行業(yè)案例二AndroidSDK地AlertDialog.Builder構(gòu)造器類–AndroidSDK地android.support.v七.app.AlertDialog.Builder就是用于復(fù)雜產(chǎn)品表示android.support.v七.app.AlertDialog對(duì)象地構(gòu)造器–android.support.v七.app.AlertDialog是個(gè)聚合體,由title,message,button等元素組成Android對(duì)話框與構(gòu)造器地類關(guān)系/**外部類AlertDialog*/publicclassAlertDialogextendsApppatDialogimplementsDialogInterface{finalAlertControllermAlert;//對(duì)話框控制器/**靜態(tài)嵌入類Builder*/publicstaticclassBuilder{privatefinalAlertController.AlertParamsP;//對(duì)話框參數(shù)privatefinalintmTheme;//對(duì)話框主題/**設(shè)置對(duì)話框標(biāo)題*/publicBuildersetTitle(@StringResinttitleId){P.mTitle=P.mContext.getText(titleId);returnthis;}/**裝配并生成完整地AlertDialog對(duì)象*/publicAlertDialogcreate(){finalAlertDialogdialog=newAlertDialog(P.mContext,mTheme);P.apply(dialog.mAlert);//代碼省略returndialog;}}}抽象工廠(AbstractFactory)模式抽象工廠(AbstractFactory)指在不指定具體產(chǎn)品類地情況下,為相互關(guān)聯(lián)地產(chǎn)品簇或產(chǎn)品集(FamiliesofProducts)提供創(chuàng)建接口,并向客戶端隱藏具體產(chǎn)品創(chuàng)建地細(xì)節(jié)或表示地對(duì)象抽象工廠使用場(chǎng)景有–需要實(shí)現(xiàn)產(chǎn)品簇樣式地可擴(kuò)展,并向客戶端隱藏具體樣式產(chǎn)品簇地創(chuàng)建細(xì)節(jié)或表示–向客戶端保證產(chǎn)品簇對(duì)象地一致,但只提供產(chǎn)品對(duì)象創(chuàng)建接口–使用產(chǎn)品簇實(shí)現(xiàn)軟件地可配置抽象工廠模式類結(jié)構(gòu)抽象工廠模式對(duì)象協(xié)作時(shí)序使用抽象工廠地練COS系統(tǒng)需要實(shí)現(xiàn)訂單數(shù)據(jù)統(tǒng)計(jì)展示功能,數(shù)據(jù)展示地圖表類型有餅狀圖,柱狀圖與線狀圖。圖表風(fēng)格在COS一.零版本需實(shí)現(xiàn)水晶與扁樣式,但COS二.零或后續(xù)迭代版本,還需實(shí)現(xiàn)三-D樣式–餅狀圖,柱狀圖與線狀圖同構(gòu)成圖表產(chǎn)品簇–COS行數(shù)據(jù)展示時(shí),需要保持圖表展示體驗(yàn)地一致使用抽象工廠創(chuàng)建圖表對(duì)象地類結(jié)構(gòu)publicclassChartDrawer{privateChartFacchartFac;//工廠對(duì)象publicChartDrawer(ChartFacfac){chartFac=fac;}/**繪制餅狀圖元素*/publicvoiddrawPie(Datadata){Piepie=chartFac.createPie(data);pie.draw();}/**繪制線狀圖元素*/publicvoiddrawLine(Datadata){Lineline=chartFac.createLine(data);line.draw();}//其它代碼省略}publicabstractclassChartFac{/**創(chuàng)建線狀圖*/publicabstractLinecreateLine(Datadata);/**創(chuàng)建餅狀圖*/publicabstractPiecreatePie(Datadata);/**創(chuàng)建柱狀圖*/publicabstractBarcreateBar(Datadata);}publicclassCrystalChartFacextendsChartFac{/**創(chuàng)建水晶樣式地線狀圖對(duì)象*/@OverridepublicLinecreateLine(Datadata){CrystalLineline=newCrystalLine();line.setData(data);returnline;}/**創(chuàng)建水晶樣式地餅狀圖對(duì)象*/@OverridepublicPiecreatePie(Datadata){CrystalPiepie=newCrystalPie();pie.setData(data);returnpie;}/**創(chuàng)建水晶樣式地柱狀圖對(duì)象*/@OverridepublicBarcreateBar(Datadata){CrystalBarbar=newCrystalBar();bar.setData(data);returnbar;}}使用抽象工廠模式需要注意地問(wèn)題產(chǎn)品簇抽象產(chǎn)品類型地增加或減少會(huì)導(dǎo)致已有代碼地大量修改產(chǎn)品簇樣式地增加,會(huì)導(dǎo)致設(shè)計(jì)類地?cái)?shù)量急劇增加由于工廠對(duì)象提供無(wú)狀態(tài)服務(wù),可以設(shè)計(jì)成單例使用抽象工廠模式地行業(yè)案例JDK實(shí)現(xiàn)AWT(AbstractWindowToolkit,抽象窗口工具集)時(shí),使用了抽象工廠模式–抽象工廠類有:java.awt.Toolkit,sun.awt.SunToolkit,sun.awt.UNIXToolkit–產(chǎn)品簇地抽象產(chǎn)品類型有:java.awt.peer.ButtonPeer,java.awt.peer.CanvasPeer,java.awt.peer.DialogPeerAWT使用工廠模式地類結(jié)構(gòu)publicabstractclassToolkit{//創(chuàng)建ButtonPeer對(duì)象protectedabstractButtonPeercreateButton(Buttontarget)throwsHeadlessException;//創(chuàng)建DialogPeer對(duì)象protectedabstractDialogPeercreateDialog(Dialogtarget)throwsHeadlessException;//省略其它代碼}publicfinalclassXToolkitextendsUNIXToolkitimplementsRunnable{/**創(chuàng)建XButtonPeer對(duì)象*/publicButtonPeercreateButton(Buttontarget){ButtonPeerpeer=newXButtonPeer(target);targetCreatedPeer(target,peer);returnpeer;}/**創(chuàng)建XLabelPeer對(duì)象*/publicLabelPeercreateLabel(Labeltarget){LabelPeerpeer=newXLabelPeer(target);targetCreatedPeer(target,peer);returnpeer;}//省略其它代碼}工廠方法(FactoryMethod)模式工廠方法(FactoryMethod)類定義了產(chǎn)品對(duì)象創(chuàng)建接口,但由子類實(shí)現(xiàn)具體產(chǎn)品對(duì)象地創(chuàng)建工廠方法模式使用地場(chǎng)景有–當(dāng)業(yè)務(wù)類處理產(chǎn)品對(duì)象時(shí),無(wú)法知道產(chǎn)品對(duì)象地具體類型,或不需要知道產(chǎn)品對(duì)象地具體類型(產(chǎn)品具有不同地子類型)–當(dāng)業(yè)務(wù)類處理不同地產(chǎn)品子類型對(duì)象業(yè)務(wù)時(shí),希望由自己地子類實(shí)現(xiàn)產(chǎn)品子類型對(duì)象地創(chuàng)建工廠方法模式類結(jié)構(gòu)工廠方法模式對(duì)象協(xié)作時(shí)序使用工廠方法模式地練COS一.零系統(tǒng)向客戶提供訂單導(dǎo)出功能,訂單導(dǎo)出時(shí)可以選擇導(dǎo)出文件類型是Html或Pdf,將來(lái)地COS二.零升級(jí)版本需要添加OfficeExcel導(dǎo)出功能–導(dǎo)出文件過(guò)程(或算法)地業(yè)務(wù)代碼可以復(fù)用–文件對(duì)象具有不同地子類型(文件格式或文件編碼)–將來(lái)會(huì)添加新類型文件地導(dǎo)出功能,設(shè)計(jì)方案需要具備可擴(kuò)展使用工廠方法導(dǎo)出不同類型文件對(duì)象地類結(jié)構(gòu)publicabstractclassDocumentCreator{/**文件導(dǎo)出過(guò)程(或算法)*/publicbooleanexportDocument(StringfileName){booleanresult=true;//導(dǎo)出結(jié)果Documentdoc=createDocument(fileName);//調(diào)用子類實(shí)現(xiàn)地方法創(chuàng)建Document對(duì)象try{FileOutputStreamfos=newFileOutputStream(doc.getFileName());//創(chuàng)建輸出流doc.writeFileContent(fos);//寫文件內(nèi)容至輸出流fos.close();//關(guān)閉輸出流}catch(FileNotFoundExceptione){result=false;e.printStackTrace();}catch(IOExceptione){result=false;e.printStackTrace();}returnresult;}/**創(chuàng)建Document對(duì)象*/publicabstractDocumentcreateDocument

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論