




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向?qū)ο笤O(shè)計(jì)原那么Java 本章教學(xué)內(nèi)容面向?qū)ο笤O(shè)計(jì)原那么概述單一職責(zé)原那么開(kāi)閉原那么里氏代換原那么依賴(lài)倒轉(zhuǎn)原那么接口隔離原那么合成復(fù)用原那么迪米特法那么面向?qū)ο笤O(shè)計(jì)原那么概述軟件的可維護(hù)性和可復(fù)用性知名軟件大師RobertC.Martin認(rèn)為一個(gè)可維護(hù)性較低的軟件設(shè)計(jì),通常由于如下四個(gè)原因造成:過(guò)于僵硬(Rigidity)過(guò)于脆弱(Fragility)復(fù)用率低(Immobility)黏度過(guò)高(Viscosity)RobertC.Martin面向?qū)ο笤O(shè)計(jì)原那么概述軟件的可維護(hù)性和可復(fù)用性軟件工程和建模大師PeterCoad認(rèn)為,一個(gè)好的系統(tǒng)設(shè)計(jì)應(yīng)該具備如下三個(gè)性質(zhì):可擴(kuò)展性(Extensibility)靈活性(Flexibility)可插入性(Pluggability)
PeterCoad面向?qū)ο笤O(shè)計(jì)原那么概述軟件的可維護(hù)性和可復(fù)用性軟件的復(fù)用(Reuse)或重用擁有眾多優(yōu)點(diǎn),如可以提高軟件的開(kāi)發(fā)效率,提高軟件質(zhì)量,節(jié)約開(kāi)發(fā)本錢(qián),恰當(dāng)?shù)膹?fù)用還可以改善系統(tǒng)的可維護(hù)性。面向?qū)ο笤O(shè)計(jì)復(fù)用的目標(biāo)在于實(shí)現(xiàn)支持可維護(hù)性的復(fù)用。在面向?qū)ο蟮脑O(shè)計(jì)里面,可維護(hù)性復(fù)用都是以面向?qū)ο笤O(shè)計(jì)原那么為根底的,這些設(shè)計(jì)原那么首先都是復(fù)用的原那么,遵循這些設(shè)計(jì)原那么可以有效地提高系統(tǒng)的復(fù)用性,同時(shí)提高系統(tǒng)的可維護(hù)性。面向?qū)ο笤O(shè)計(jì)原那么概述軟件的可維護(hù)性和可復(fù)用性面向?qū)ο笤O(shè)計(jì)原那么和設(shè)計(jì)模式也是對(duì)系統(tǒng)進(jìn)行合理重構(gòu)的指南針,重構(gòu)(Refactoring)是在不改變軟件現(xiàn)有功能的根底上,通過(guò)調(diào)整程序代碼改善軟件的質(zhì)量、性能,使其程序的設(shè)計(jì)模式和架構(gòu)更趨合理,提高軟件的擴(kuò)展性和維護(hù)性。MartinFowler面向?qū)ο笤O(shè)計(jì)原那么概述面向?qū)ο笤O(shè)計(jì)原那么簡(jiǎn)介常用的面向?qū)ο笤O(shè)計(jì)原那么包括七個(gè),這些原那么并不是孤立存在的,它們相互依賴(lài),相互補(bǔ)充。設(shè)計(jì)原則名稱(chēng)設(shè)計(jì)原則簡(jiǎn)介重要性單一職責(zé)原則(SingleResponsibilityPrinciple,SRP)類(lèi)的職責(zé)要單一,不能將太多的職責(zé)放在一個(gè)類(lèi)中。★★★★☆開(kāi)閉原則(Open-ClosedPrinciple,OCP)軟件實(shí)體對(duì)擴(kuò)展是開(kāi)放的,但對(duì)修改是關(guān)閉的,即在不修改一個(gè)軟件實(shí)體的基礎(chǔ)上去擴(kuò)展其功能。★★★★★里氏代換原則(LiskovSubstitutionPrinciple,LSP)在軟件系統(tǒng)中,一個(gè)可以接受基類(lèi)對(duì)象的地方必然可以接受一個(gè)子類(lèi)對(duì)象。★★★★☆依賴(lài)倒轉(zhuǎn)原則(DependencyInversionPrinciple,DIP)要針對(duì)抽象層編程,而不要針對(duì)具體類(lèi)編程。★★★★★接口隔離原則(InterfaceSegregationPrinciple,ISP)使用多個(gè)專(zhuān)門(mén)的接口來(lái)取代一個(gè)統(tǒng)一的接口。★★☆☆☆合成復(fù)用原則(CompositeReusePrinciple,CRP)在系統(tǒng)中應(yīng)該盡量多使用組合和聚合關(guān)聯(lián)關(guān)系,盡量少使用甚至不使用繼承關(guān)系。★★★★☆迪米特法則(LawofDemeter,LoD)一個(gè)軟件實(shí)體對(duì)其他實(shí)體的引用越少越好,或者說(shuō)如果兩個(gè)類(lèi)不必彼此直接通信,那么這兩個(gè)類(lèi)就不應(yīng)當(dāng)發(fā)生直接的相互作用,而是通過(guò)引入一個(gè)第三者發(fā)生間接交互。★★★☆☆單一職責(zé)原那么單一職責(zé)原那么定義單一職責(zé)原那么(SingleResponsibilityPrinciple,SRP)定義如下:在軟件系統(tǒng)中,一個(gè)類(lèi)只負(fù)責(zé)一個(gè)功能領(lǐng)域中的相應(yīng)職責(zé)。另一種定義方式如下:就一個(gè)類(lèi)而言,應(yīng)該僅有一個(gè)引起它變化的原因。單一職責(zé)原那么單一職責(zé)原那么分析一個(gè)類(lèi)〔或者大到模塊,小到方法〕承擔(dān)的職責(zé)越多,它被復(fù)用的可能性越小。而且如果一個(gè)類(lèi)承擔(dān)的職責(zé)過(guò)多,就相當(dāng)于將這些職責(zé)耦合在一起,當(dāng)其中一個(gè)職責(zé)變化時(shí),可能會(huì)影響其他職責(zé)的運(yùn)作。類(lèi)的職責(zé)主要包括兩個(gè)方面:數(shù)據(jù)職責(zé)和行為職責(zé),數(shù)據(jù)職責(zé)通過(guò)其屬性來(lái)表達(dá),而行為職責(zé)通過(guò)其方法來(lái)表達(dá)。單一職責(zé)原那么是實(shí)現(xiàn)高內(nèi)聚、低耦合的指導(dǎo)方針,在很多代碼重構(gòu)手法中都能找到它的存在,它是最簡(jiǎn)單但又最難運(yùn)用的原那么,需要設(shè)計(jì)人員發(fā)現(xiàn)類(lèi)的不同職責(zé)并將其別離,而發(fā)現(xiàn)類(lèi)的多重職責(zé)需要設(shè)計(jì)人員具有較強(qiáng)的分析設(shè)計(jì)能力和相關(guān)重構(gòu)經(jīng)驗(yàn)。軒轅黃帝曰“守一〞,堯舜薪傳“惟精惟一〞,《周易》曰“貞一〞,老子曰“執(zhí)一〞,管子曰“專(zhuān)一〞.單一職責(zé)原那么單一職責(zé)原那么實(shí)例實(shí)例說(shuō)明某基于Java的C/S系統(tǒng)的“登錄功能〞通過(guò)如下登錄類(lèi)(Login)實(shí)現(xiàn):現(xiàn)使用單一職責(zé)原那么對(duì)其進(jìn)行重構(gòu)。單一職責(zé)原那么單一職責(zé)原那么實(shí)例實(shí)例解析使用單一職責(zé)原那么重構(gòu)后的類(lèi)圖:開(kāi)閉原那么開(kāi)閉原那么定義開(kāi)閉原那么(Open-ClosedPrinciple,OCP)定義如下:一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。也就是說(shuō)在設(shè)計(jì)一個(gè)模塊的時(shí)候,應(yīng)當(dāng)使這個(gè)模塊可以在不被修改的前提下被擴(kuò)展,即實(shí)現(xiàn)在不修改源代碼的情況下改變這個(gè)模塊的行為。開(kāi)閉原那么開(kāi)閉原那么分析開(kāi)閉原那么由BertrandMeyer于1988年提出,它是面向?qū)ο笤O(shè)計(jì)中最重要的原那么之一。在開(kāi)閉原那么的定義中,軟件實(shí)體可以指一個(gè)軟件模塊、一個(gè)由多個(gè)類(lèi)組成的局部結(jié)構(gòu)或一個(gè)獨(dú)立的類(lèi)。開(kāi)閉原那么開(kāi)閉原那么分析抽象化是開(kāi)閉原那么的關(guān)鍵。絕大局部的設(shè)計(jì)模式都符合開(kāi)閉原那么,在對(duì)每一個(gè)模式進(jìn)行優(yōu)缺點(diǎn)評(píng)價(jià)時(shí)都會(huì)以開(kāi)閉原那么作為一個(gè)重要的評(píng)價(jià)依據(jù),以判斷基于該模式設(shè)計(jì)的系統(tǒng)是否具備良好的靈活性和可擴(kuò)展性。開(kāi)閉原那么開(kāi)閉原那么實(shí)例實(shí)例說(shuō)明某圖形界面系統(tǒng)提供了各種不同形狀的按鈕,客戶(hù)端代碼可針對(duì)這些按鈕進(jìn)行編程,用戶(hù)可能會(huì)改變需求要求使用不同的按鈕,原始設(shè)計(jì)方案如下圖:現(xiàn)對(duì)該系統(tǒng)進(jìn)行重構(gòu),使之滿(mǎn)足開(kāi)閉原那么的要求。開(kāi)閉原那么開(kāi)閉原那么實(shí)例實(shí)例解析里氏代換原那么里氏代換原那么定義里氏代換原那么(LiskovSubstitutionPrinciple,LSP)有兩種定義方式,第一種定義方式相對(duì)嚴(yán)格,其定義如下:如果對(duì)每一個(gè)類(lèi)型為S的對(duì)象o1,都有類(lèi)型為T(mén)的對(duì)象o2,使得以T定義的所有程序P在所有的對(duì)象o1都代換成o2時(shí),程序P的行為沒(méi)有變化,那么類(lèi)型S是類(lèi)型T的子類(lèi)型。第二種更容易理解的定義方式如下:所有引用基類(lèi)〔父類(lèi)〕的地方必須能透明地使用其子類(lèi)的對(duì)象。里氏代換原那么里氏代換原那么分析里氏代換原那么由2008年圖靈獎(jiǎng)得主、美國(guó)第一位計(jì)算機(jī)科學(xué)女博士、麻省理工學(xué)院BarbaraLiskov教授和卡內(nèi)基-梅隆大學(xué)JeannetteWing教授于1994年提出。芭芭拉·利斯科夫〔BarbaraLiskov〕,美國(guó)計(jì)算機(jī)科學(xué)家,2008年圖靈獎(jiǎng)〔計(jì)算機(jī)領(lǐng)域的諾貝爾獎(jiǎng)〕得主,2004年約翰·馮諾依曼獎(jiǎng)得主。美國(guó)工程院院士,美國(guó)藝術(shù)與科學(xué)院院士,美國(guó)計(jì)算機(jī)協(xié)會(huì)會(huì)士。現(xiàn)任麻省理工學(xué)院電子電氣與計(jì)算機(jī)科學(xué)系教授。她是美國(guó)第一個(gè)計(jì)算機(jī)科學(xué)女博士,第二位獲得圖靈獎(jiǎng)的女科學(xué)家。里氏代換原那么里氏代換原那么分析里氏代換原那么可以通俗表述為:在軟件中如果能夠使用基類(lèi)對(duì)象,那么一定能夠使用其子類(lèi)對(duì)象。把基類(lèi)都替換成它的子類(lèi),程序?qū)⒉粫?huì)產(chǎn)生任何錯(cuò)誤和異常,反過(guò)來(lái)那么不成立,如果一個(gè)軟件實(shí)體使用的是一個(gè)子類(lèi)的話,那么它不一定能夠使用基類(lèi)。里氏代換原那么是實(shí)現(xiàn)開(kāi)閉原那么的重要方式之一,由于使用基類(lèi)對(duì)象的地方都可以使用子類(lèi)對(duì)象,因此在程序中盡量使用基類(lèi)類(lèi)型來(lái)對(duì)對(duì)象進(jìn)行定義,而在運(yùn)行時(shí)再確定其子類(lèi)類(lèi)型,用子類(lèi)對(duì)象來(lái)替換父類(lèi)對(duì)象。里氏代換原那么里氏代換原那么分析喜歡動(dòng)物喜歡貓因?yàn)樨埵莿?dòng)物
里氏代換原那么里氏代換原那么實(shí)例實(shí)例說(shuō)明某系統(tǒng)需要實(shí)現(xiàn)對(duì)重要數(shù)據(jù)〔如用戶(hù)密碼〕的加密處理,在數(shù)據(jù)操作類(lèi)(DataOperator)中需要調(diào)用加密類(lèi)中定義的加密算法,系統(tǒng)提供了兩個(gè)不同的加密類(lèi),CipherA和CipherB,它們實(shí)現(xiàn)不同的加密方法,在DataOperator中可以選擇其中的一個(gè)實(shí)現(xiàn)加密操作。如下圖:里氏代換原那么里氏代換原那么實(shí)例實(shí)例說(shuō)明如果需要更換一個(gè)加密算法類(lèi)或者增加并使用一個(gè)新的加密算法類(lèi),如將CipherA改為CipherB,那么需要修改客戶(hù)類(lèi)Client和數(shù)據(jù)操作類(lèi)DataOperator的源代碼,違背了開(kāi)閉原那么。現(xiàn)使用里氏代換原那么對(duì)其進(jìn)行重構(gòu),使得系統(tǒng)可以靈活擴(kuò)展,符合開(kāi)閉原那么。里氏代換原那么里氏代換原那么實(shí)例實(shí)例解析依賴(lài)倒轉(zhuǎn)原那么依賴(lài)倒轉(zhuǎn)原那么定義依賴(lài)倒轉(zhuǎn)原那么(DependenceInversionPrinciple,DIP)的定義如下:高層模塊不應(yīng)該依賴(lài)低層模塊,它們都應(yīng)該依賴(lài)抽象。抽象不應(yīng)該依賴(lài)于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴(lài)于抽象。另一種表述為:要針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程。依賴(lài)倒轉(zhuǎn)原那么依賴(lài)倒轉(zhuǎn)原那么分析依賴(lài)倒轉(zhuǎn)原那么是RobertC.Martin在1996年為《C++Reporter》所寫(xiě)的專(zhuān)欄EngineeringNotebook的第三篇,后來(lái)參加到他在2002年出版的經(jīng)典著作《AgileSoftwareDevelopment,Principles,Patterns,andPractices》中。依賴(lài)倒轉(zhuǎn)原那么依賴(lài)倒轉(zhuǎn)原那么分析簡(jiǎn)單來(lái)說(shuō),依賴(lài)倒轉(zhuǎn)原那么就是指:代碼要依賴(lài)于抽象的類(lèi),而不要依賴(lài)于具體的類(lèi);要針對(duì)接口或抽象類(lèi)編程,而不是針對(duì)具體類(lèi)編程。實(shí)現(xiàn)開(kāi)閉原那么的關(guān)鍵是抽象化,并且從抽象化導(dǎo)出具體化實(shí)現(xiàn),如果說(shuō)開(kāi)閉原那么是面向?qū)ο笤O(shè)計(jì)的目標(biāo)的話,那么依賴(lài)倒轉(zhuǎn)原那么就是面向?qū)ο笤O(shè)計(jì)的主要手段。依賴(lài)倒轉(zhuǎn)原那么依賴(lài)倒轉(zhuǎn)原那么分析依賴(lài)倒轉(zhuǎn)原那么的常用實(shí)現(xiàn)方式之一是在代碼中使用抽象類(lèi),而將具體類(lèi)放在配置文件中。“將抽象放進(jìn)代碼,將細(xì)節(jié)放進(jìn)元數(shù)據(jù)〞《程序員修煉之道:從小工到專(zhuān)家》接口隔離原那么接口隔離原那么定義接口隔離原那么(InterfaceSegregationPrinciple,ISP)的定義如下:客戶(hù)端不應(yīng)該依賴(lài)那些它不需要的接口。注意,在該定義中的接口指的是所定義的方法。另一種定義方法如下:一旦一個(gè)接口太大,那么需要將它分割成一些更細(xì)小的接口,使用該接口的客戶(hù)端僅需知道與之相關(guān)的方法即可。接口隔離原那么接口隔離原那么分析接口隔離原那么是指使用多個(gè)專(zhuān)門(mén)的接口,而不使用單一的總接口。每一個(gè)接口應(yīng)該承擔(dān)一種相對(duì)獨(dú)立的角色,不多不少,不干不該干的事,該干的事都要干。(1)一個(gè)接口就只代表一個(gè)角色,每個(gè)角色都有它特定的一個(gè)接口,此時(shí)這個(gè)原那么可以叫做“角色隔離原那么〞。(2)接口僅僅提供客戶(hù)端需要的行為,即所需的方法,客戶(hù)端不需要的行為那么隱藏起來(lái),應(yīng)當(dāng)為客戶(hù)端提供盡可能小的單獨(dú)的接口,而不要提供大的總接口。接口隔離原那么接口隔離原那么分析使用接口隔離原那么拆分接口時(shí),首先必須滿(mǎn)足單一職責(zé)原那么,將一組相關(guān)的操作定義在一個(gè)接口中,且在滿(mǎn)足高內(nèi)聚的前提下,接口中的方法越少越好。可以在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)采用定制效勞的方式,即為不同的客戶(hù)端提供寬窄不同的接口,只提供用戶(hù)需要的行為,而隱藏用戶(hù)不需要的行為。接口隔離原那么接口隔離原那么實(shí)例實(shí)例說(shuō)明以下圖展示了一個(gè)擁有多個(gè)客戶(hù)類(lèi)的系統(tǒng),在系統(tǒng)中定義了一個(gè)巨大的接口AbstractService來(lái)效勞所有的客戶(hù)類(lèi)。可以使用接口隔離原那么對(duì)其進(jìn)行重構(gòu)。接口隔離原那么接口隔離原那么實(shí)例實(shí)例解析合成復(fù)用原那么合成復(fù)用原那么定義合成復(fù)用原那么(CompositeReusePrinciple,CRP)又稱(chēng)為組合/聚合復(fù)用原那么(Composition/AggregateReusePrinciple,CARP),其定義如下:盡量使用對(duì)象組合,而不是繼承來(lái)到達(dá)復(fù)用的目的。合成復(fù)用原那么合成復(fù)用原那么分析合成復(fù)用原那么就是指在一個(gè)新的對(duì)象里通過(guò)關(guān)聯(lián)關(guān)系〔包括組合關(guān)系和聚合關(guān)系〕來(lái)使用一些已有的對(duì)象,使之成為新對(duì)象的一局部;新對(duì)象通過(guò)委派調(diào)用已有對(duì)象的方法到達(dá)復(fù)用其已有功能的目的。簡(jiǎn)言之:要盡量使用組合/聚合關(guān)系,少用繼承。合成復(fù)用原那么合成復(fù)用原那么實(shí)例實(shí)例說(shuō)明某教學(xué)管理系統(tǒng)局部數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)設(shè)計(jì)如下圖:合成復(fù)用原那么合成復(fù)用原那么實(shí)例實(shí)例說(shuō)明如果需要更換數(shù)據(jù)庫(kù)連接方式,如原來(lái)采用JDBC連接數(shù)據(jù)庫(kù),現(xiàn)在采用數(shù)據(jù)庫(kù)連接池連接,那么需要修改DBUtil類(lèi)源代碼。如果StudentDAO采用JDBC連接,但是TeacherDAO采用連接池連接,那么需要增加一個(gè)新的DBUtil類(lèi),并修改StudentDAO或TeacherDAO的源代碼,使之繼承新的數(shù)據(jù)庫(kù)連接類(lèi),這將違背開(kāi)閉原那么,系統(tǒng)擴(kuò)展性較差。現(xiàn)使用合成復(fù)用原那么對(duì)其進(jìn)行重構(gòu)。合成復(fù)用原那么合成復(fù)用原那么實(shí)例實(shí)例解析迪米特法那么迪米特法那么定義迪米特法那么(LawofDemeter,LoD)又稱(chēng)為最少知識(shí)原那么(LeastKnowledgePrinciple,LKP),它有多種定義方法,其中幾種典型定義如下:(1)不要和“陌生人〞說(shuō)話。(2)只與你的直接朋友通信。(3)每一個(gè)軟件單位對(duì)其他的單位都只有最少的知識(shí),而且局限于那些與本單位密切相關(guān)的軟件單位。迪米特法那么迪米特法那么分析迪米特法那么來(lái)自于1987年秋美國(guó)東北大學(xué)(NortheasternUniversity)一個(gè)名為“Demeter〞的研究工程。簡(jiǎn)單來(lái)說(shuō),迪米特法那么就是指一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少的與其他實(shí)體發(fā)生相互作用。這樣,當(dāng)一個(gè)模塊修改時(shí),就會(huì)盡量少的影響其他的模塊,擴(kuò)展會(huì)相對(duì)容易,這是對(duì)軟件實(shí)體之間通信的限制,它要求限制軟件實(shí)體之間通信的寬度和深度。迪米特法那么迪米特法那么分析在迪米特法那么中,對(duì)于一個(gè)對(duì)象,其朋友包括以下幾類(lèi):(1)當(dāng)前對(duì)象本身(this);(2)以參數(shù)形式傳入到當(dāng)前對(duì)象方法中的對(duì)象;(3)當(dāng)前對(duì)象的成員對(duì)象;(4)如果當(dāng)前對(duì)象的成員對(duì)象是一個(gè)集合,那么集合中的元素也都是朋友;(5)當(dāng)前對(duì)象所創(chuàng)立的對(duì)象。任何一
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024項(xiàng)目管理考試輔導(dǎo)材料試題及答案
- 廣告策劃中的危機(jī)公關(guān)處理考核試卷
- 財(cái)務(wù)數(shù)據(jù)解讀與應(yīng)用試題及答案
- 陜西排水帶施工方案
- 針對(duì)新形勢(shì)的注冊(cè)會(huì)計(jì)師考試變革探討試題及答案
- 2024項(xiàng)目管理專(zhuān)業(yè)知識(shí)考題試題及答案
- 2024年項(xiàng)目成功的關(guān)鍵因素與應(yīng)對(duì)方案試題及答案
- 打井前施工方案怎么寫(xiě)
- 項(xiàng)目管理專(zhuān)業(yè)人士資格考試的備考經(jīng)驗(yàn)試題及答案
- 電視機(jī)語(yǔ)音助手與智能交互技術(shù)考核試卷
- 婚育情況登記表
- INVOICE-商業(yè)發(fā)票樣本格式
- 圓周率1000000位 完整版
- DB33-1036-2021《公共建筑節(jié)能設(shè)計(jì)標(biāo)準(zhǔn)》
- 巖芯鑒定手冊(cè)
- 快速排序算法高校試講PPT
- 甘肅歷史與甘肅文化
- 工程勘察設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)
- 高邊坡施工危險(xiǎn)源辨識(shí)及分析
- 江蘇工業(yè)企業(yè)較大以上風(fēng)險(xiǎn)目錄
- 監(jiān)理質(zhì)量評(píng)估報(bào)告(主體分部)
評(píng)論
0/150
提交評(píng)論