




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、設(shè)計模式1 2 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)適配器模式GoF工廠模式GoF單子模式GoF策略模式GoF組合模式GoF外觀模式GoF觀察者/發(fā)布訂閱/委托事件模式GoF1.適配器模式在POS系統(tǒng)中,需要和多個外部系統(tǒng)交互庫存系統(tǒng)、稅金計算器、賬務(wù)系統(tǒng)等。以使用第三方稅金計算器為例使用A計算器TaxA atax= new TaxA();TaxA.tax(,);使用B計算器TaxB atax= new TaxB();TaxB.getTax(,);代碼中有兩個容易變化的地方:計算器的類名、計算器提供的方法名2。使用適配器來屏蔽接口的差異 class TaxAdaptor TaxA tax=new
2、TaxA(); float getTaxes() return tax.tax(); 3。代碼變?yōu)門axAdaptor adaptor ;adaptor =new TaxAAdaptor();adaptor.getTaxes(.); TaxBdaptor adaptor ;adaptor =new TaxBAdaptor();adaptor.getTaxes(.);接口統(tǒng)一了,但是代碼還是和具體的類耦合!繼續(xù)想方法!4。創(chuàng)立適配器的抽象來屏蔽不同的適配器ITaxCalculatorAdaptor adaptor ;adaptor =new TaxAAdaptor();adaptor.getTa
3、xes(.); ITaxCalculatorAdaptor adaptor ;adaptor =new TaxBAdaptor();adaptor.getTaxes(.); 現(xiàn)在,就剩紅色字體處要出來啦繼續(xù)想方法! 6 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)1.適配器模式問題:如何解決接口不兼容的問題或為不同接口但相似的組件提供一個穩(wěn)定的接口?解決方案:通過一個中間的適配器對象將組件的原來接口轉(zhuǎn)換為另一個接口。4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)-適配器模式適配器模式類圖 7 8 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)-適配器模式SAPAccountingAdaptor負(fù)責(zé)將postSale接口適配成外部效勞
4、的接口clientAdapterAdaptee有一個類(adaptee)實現(xiàn)了數(shù)學(xué)中的冪次運(yùn)算,方法中需要傳入兩個參數(shù),一個是基數(shù)base,另外一個是冪次exp?,F(xiàn)在客戶端需要一個求得一個數(shù)的平方的函數(shù)接口(target),傳入一個數(shù),得到它的平方值。請應(yīng)用適配器模式進(jìn)行設(shè)計,繪制類圖。 9 10 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)2工廠模式2.工廠模式考慮:在前面外部效勞適配器解決方案中,誰去負(fù)責(zé)創(chuàng)立這些適配器?誰去確定要創(chuàng)立的是哪個適配器,是TaxMasterAdapter 還是GoodAsGoldTaxProAdapter?讓領(lǐng)域類如Sale來創(chuàng)立適配器對象是否適宜?-如此那么領(lǐng)域類不只是
5、包含應(yīng)用邏輯了!一個設(shè)計原那么:設(shè)計要保證別離不相關(guān)的事物。別離不同的事物到不同的領(lǐng)域,從而使得別離的各局部能到達(dá)高內(nèi)聚的設(shè)計目標(biāo)。5。應(yīng)用工廠模式來屏蔽具體適配器ITaxCalculatorAdaptor adaptor;ServiceFactory factory=new ServiceFactory();adaptor =factory.getTaxCalculatorAdaptor();adaptor.getTaxes(.); 現(xiàn)在,代碼徹底和具體的適配器類無關(guān)啦6。工廠中如何與具體適配器類解耦1具體用哪個適配器?用屬性來記錄System.setProperty(name,zhouch
6、unyan)System.setProperty(ITaxCalculatorA, TaxAAdaptor);2工廠中的getTaxCalculatorAdaptor與具體適配器解耦I(lǐng)TaxCalculatorAdaptor getTaxCalculatorAdaptor() if(taxCalculatorAdaptor=null) String className=System.getProperty(ITaxCalculatorA); taxCalculatorAdaptor=Class.forname(classNam
7、e).newinstance() return taxCalculatorAdaptor; 13 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)2工廠模式問題:當(dāng)考慮某些特殊情況時,如復(fù)雜的創(chuàng)立邏輯、希望別離創(chuàng)立職責(zé)以產(chǎn)生更好的內(nèi)聚度等,誰應(yīng)該負(fù)責(zé)創(chuàng)立對象?解決方案:創(chuàng)立一個名為工廠的純虛構(gòu)對象來處理創(chuàng)立。工廠類ServiceFactory負(fù)責(zé)創(chuàng)立第三方財務(wù)適配器、庫存適配器、稅金計算器。if ( taxCalculatorAdapter = null ) /創(chuàng)立某一稅率計算器對象賦值給 /taxCalculatorAdapter ; return taxCalculatorAdapter;返回值類型?類型
8、?getTaxCalculatorAdapter() : 返回類型是TaxMasterAdaptor還是 GoodAsGoldTaxProAdaptor?還是 14 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)2工廠模式注意:工廠方法返回對象的類型是接口,而不是類,這樣工廠方法就可以返回接口的任何實現(xiàn)。注意:在serviceFactory中,決定哪個類的實例被初始化是從外部數(shù)據(jù)源讀入類名如在java中可使用系統(tǒng)屬性,然后動態(tài)裝載此類來實現(xiàn)的。 if(taxCalculatorAdaptor=null) String className=System.getProperty(taxCalculator.cl
9、); taxCalculatorAdaptor= (ITaxCalculatorAdaptor)Class.forName(className).newInstance(); return taxCalculatorAdaptor; 15 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)2工廠模式補(bǔ)充依賴倒置原那么(DIP)告訴我們應(yīng)該優(yōu)先依賴于抽象類,而防止依賴于具體類。當(dāng)這些具體類不穩(wěn)定時,更應(yīng)該如此。因此,下面的代碼違反了這個原那么Circle c = new Circle(); 16 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)2工廠模式改進(jìn):工廠模式允許我們只依賴于抽象接口就能創(chuàng)立出具體類的實例
10、。public interface ShapeFactory public Shape make(String shapeName) throws Exception; 17 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)2工廠模式public class ShapeFactoryImplementation implements ShapeFactory public Shape make(String shapeName) throws Exception if (shapeName.equals(Circle) return new Circle(); else if (shapeName.equal
11、s(Square) return new Square(); else throw new Exception(ShapeFactory cannot create + shapeName); 18 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)3單子模式3.單子模式誰創(chuàng)立工廠類?如何訪問此類?事實:整個程序只需要一個工廠類的實例;由于代碼在不同的地方需要訪問適配器以調(diào)用外部系統(tǒng)的效勞,所以工廠類的方法也需要在代碼的多個地方被調(diào)用。問題:一個類X只能有一個實例這就是“單子的含義)。對象需要全局的可見性和單一的訪問點(diǎn)。解決方案:為類X定義靜態(tài)方法getInstance,該方法返回X的唯一實例。因為是靜態(tài)方法,
12、所以可以全局訪問,且該類的構(gòu)造方法可見性設(shè)為私有private。 19 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)3單子模式/單子方法getlnstance返回工廠類的唯一實例public static synchronized ServicesFactory getlnstance() if ( instance = null ) instance = new ServicesFactory(); return instance; 20 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)3單子模式Synchronized解釋:單子類的getInstance方法經(jīng)常被調(diào)用,在多線程MultiThread的應(yīng)用程序里,在某
13、一客戶端線程調(diào)用getInstance方法前,必須先把該方法鎖住,以防止其他客戶端調(diào)用該方法;當(dāng)方法調(diào)用完畢后,再把鎖翻開,讓其他客戶端線程可以調(diào)用該方法。從而實現(xiàn)線程的并發(fā)控制。 21 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)3單子模式public class Register IAccountingAdapter accountingAdapter; public void initialize() do some work . accountingAdapter = ServicesFactory.getlnstance().getAccountingAdapter(); do some wor
14、k . / other methods. ServicesFactory具有全局可見性Register對工廠類的調(diào)用: 22 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)3單子模式ServicesFactory.getlnstance().getAccountingAdapter();通過單子模式得到該實例的可見性 23 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)外部接口變化的解決方案register向外部SAP財務(wù)系統(tǒng)發(fā)送PostSaleregister從工廠類中獲取針對SAP財務(wù)系統(tǒng)的適配器SAPAccountingAdaptor;Register向SAPAccountingAdaptor發(fā)送PostSale消
15、息,由適配器將消息適配后轉(zhuǎn)發(fā)給外部SAP財務(wù)系統(tǒng)。請畫出以上交互的順序圖 24 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)外部接口變化的解決方案適配器模式、多態(tài)模式、工廠模式、單子模式的綜合運(yùn)用 25 目的:實現(xiàn)復(fù)雜的定價規(guī)那么。商店的定價策略可能變化。對變化的定價算法我們應(yīng)如何設(shè)計?策略模式語境/問題:如何對變化或與變化相關(guān)的算法或策略進(jìn)行設(shè)計?如何設(shè)計系統(tǒng)使得其具有改變算法或策略的能力?解決方案:在單獨(dú)的類中分別定義每種算法、策略和政策,并且使其具有公共接口。4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)4策略模式 26 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)4策略模式用多態(tài)屏蔽變化一種策略對應(yīng)于一個類 27 4 用G
16、oF設(shè)計模式設(shè)計用例實現(xiàn)4策略模式策略對象依附于語境對象,策略對象對其應(yīng)用算法。本例中Sale是語境對象。當(dāng)getTotal消息發(fā)給Sale時,它會把局部工作委派給它的策略對象。通常,發(fā)給語境對象的消息和發(fā)給策略對象的消息會同名。語境對象會把自身的引用傳遞給策略對象,使得策略對象對語境對象擁有參數(shù) 可見性,便于將來的協(xié)作。調(diào)用策略對象獲取折扣后總價格 28 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)4策略模式語境對象需要其策略對象的屬性可見性Sale需要其策略的屬性可見性注意:Sale和ISalePricingStrategy接口關(guān)聯(lián),而不是和具體策略類關(guān)聯(lián)。這就可以使接口的任何實現(xiàn)都可以與Sale的p
17、ricingStrategy屬性綁定。對象如何獲取策略對象的可見性 29 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)4策略模式誰來負(fù)責(zé)創(chuàng)立策略對象:工廠類出于內(nèi)聚的考慮,創(chuàng)立專門用于生成策略對象的工廠類:PricingStrategyFactory注意:策略工廠不需要緩存策略類的實例,因為策略是經(jīng)常變化的。應(yīng)該在每次要用的時候進(jìn)行實例化。對象如何獲取策略對象的可見性 30 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)4策略模式在sale的初始化時獲取策略對象的引用對象如何獲取策略對象的可見性 31 示意代碼:Public class sale ISalePricingStrategy ps; public sale
18、()/構(gòu)造方法 psPricingStrategyFactory.getInstance(). getSalePricingStrategy Public Money getTotal /計算折扣前的各saleLineItem銷售價格總和; return ps.getTotal(this;/代碼只和接口打交道 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)4策略模式練習(xí):假設(shè)現(xiàn)在要設(shè)計一個販賣各類書籍的電子商務(wù)網(wǎng)站的購物車系統(tǒng)。對所有的教材類圖書實行每本一元的折扣;對連環(huán)畫類圖書提供每本7%的促銷折扣;而對非教材類的計算機(jī)圖書有3%的折扣;對其余書沒有折扣。請應(yīng)用策略模式進(jìn)行設(shè)計,繪制類圖 32 33 34
19、 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)5組合模式現(xiàn)實情況:一次銷售可能有多個定價策略;定價策略與顧客類型有關(guān)如高級會員;定價策略可能和所購置商品的類型有關(guān)如Darjeerling茶面臨問題是否存在一種方式,可以改變設(shè)計,使得Sale對象不知道是一個還是多個定價策略與其關(guān)聯(lián),并同時提供一種設(shè)計來解決定價策略沖突? 35 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)5組合模式組合模式語境/問題:如何象對待原子對象一樣對一組對象或?qū)ο蟮慕M合結(jié)構(gòu)做同樣多態(tài)的處理?解決方案:定義組合對象和原子對象的類,使得他們實現(xiàn)同樣的接口。 36 組合模式的一般形式原子對象組合對象 37 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)5組合模式組
20、合對象的顯著特征:組合對象包含一系列原子對象,這兩類對象實現(xiàn)相同的接口。對Sale附加的策略既可以是組合策略,又可以是原子策略,而Sale不用去關(guān)心到底是哪類策略。組合類strategies 38 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)5組合模式要解決的關(guān)鍵問題:Sale如何獲取組合策略對象的引用?組合策略對象由誰創(chuàng)立?Sale發(fā)消息給組合策略對象時,組合策略對象如何進(jìn)一步調(diào)用簡單策略對象來計算銷售折扣后總價格? 39 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)5組合模式存放簡單策略將簡單策略參加組合策略中1. 抽象類CompositePricingStrategy的定義 40 4 用GoF設(shè)計模式設(shè)計用例實
21、現(xiàn)5組合模式2.子類CompositeBestForCustomerPricingStrategy的定義 41 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)5組合模式獲取CompositeBestForCustomerPricingStrategy的引用在sale初始化時由策略工廠創(chuàng)立一個組合策略,并創(chuàng)立簡單策略加到組合策略里;而sale并不清楚使用的是簡單策略還是組合策略。在sale的getTotal方法中調(diào)用組合策略計算折扣后總價。 42 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)5組合模式4.調(diào)用組合策略獲取銷售折扣后總價格 42 43 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)5組合模式import java.uti
22、l.Vector;public class CompositeShape implements Shape private Vector itsShapes = new Vector(); public void add(Shape s) itsShapes.add(s); public void draw() for (int i = 0; i itsShapes.size(); i+) Shape shape = (Shape) itsShapes.elementAt(i); shape.draw(); 組合模式應(yīng)用舉例圖形可能是Square、Circle或者由Square和Circle組
23、成的復(fù)合圖形 44 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)6外觀模式外觀模式引言:學(xué)校的財務(wù)處有不同的科室,每一個科室辦理專門的業(yè)務(wù)。當(dāng)我們辦理不同的業(yè)務(wù)時,必須先調(diào)查清楚到哪個科室去辦,而且科室內(nèi)的業(yè)務(wù)有辦理流程,往往先得辦這項任務(wù),才能辦下一項任務(wù)。如果某一個科室的某項業(yè)務(wù)被轉(zhuǎn)移到其他科室去辦理,如果我們事先不清楚這一變化,那可能找不到去哪辦理這項業(yè)務(wù)。所以,去財務(wù)處辦事不方便!而如果財務(wù)處設(shè)立一個接待員,我們只需要和接待員交互,接待員再和內(nèi)部財務(wù)處人員交互,那么問題會變得非常簡單。 45 同樣的,系統(tǒng)中的子系統(tǒng)由類和子系統(tǒng)組成,這些類或子系統(tǒng)對外提供功能。外部的類需要和子系統(tǒng)中不同的類交互,來
24、實現(xiàn)預(yù)期的功能。如果子系統(tǒng)中的類名改了,類的接口改了,那么會直接影響到外部類。語境/問題:一組分散的實現(xiàn)類或接口例如子系統(tǒng)內(nèi)部的接口和實現(xiàn)類要求一個公共的、一致的接口。如何處理與子系統(tǒng)元素直接耦合或子系統(tǒng)的實現(xiàn)可能變化的情況?解決方案:為子系統(tǒng)定義一個單一的連接點(diǎn)使用外觀對象封裝子系統(tǒng),外觀對象呈現(xiàn)一個單一的一致接口,負(fù)責(zé)客戶端程序與子系統(tǒng)組件的交互。4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)6外觀模式 46 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)6外觀模式外觀對象對子系統(tǒng)實現(xiàn)提供了受保護(hù)變化。外部對象只被耦合到外觀對象,子系統(tǒng)內(nèi)的實現(xiàn)和其他組件是私有的,不能被子系統(tǒng)外部組件訪問。 47 4 用GoF設(shè)計模式
25、設(shè)計用例實現(xiàn)6外觀模式public class Sale public void makeLineItem( ProductDescription desc, int quantity ) SalesLineItem sli = new SalesLineItem( desc, quantity ); / call to the Faade if ( POSRuleEngineFacade.getInstance().isInvalid( sli, this ) ) return; lineItems.add( sli ); / . / end of class 練習(xí):一個保安系統(tǒng)由兩個錄像機(jī)
26、、三個電燈、一個遙感器和一個警報器組成。保安系統(tǒng)的操作人員需要經(jīng)常將這些儀器啟動和關(guān)閉。請使用外觀模式進(jìn)行設(shè)計,實現(xiàn)儀器的啟動和關(guān)閉 48 49 模式7觀察者模式 50 觀察者模式案例之一氣象站數(shù)據(jù)發(fā)布 51 問題:氣象站的濕度、溫度、氣壓數(shù)據(jù)要發(fā)布顯示到不同類型的顯示裝置上第一版本設(shè)計 52 53 該設(shè)計中存在的問題回憶設(shè)計原那么:將穩(wěn)定的和易變的局部分開,并且將易變的局部進(jìn)行封裝。應(yīng)用觀察者模式來處理易變的顯示裝置。概念:主題對象、觀察者 54 概念:觀察者注冊 55 Step1.鴨子申請注冊為觀察者Step2.恭喜!鴨子成為觀察者啦Step3.主題對象有數(shù)據(jù)更新,通知所有觀察者鴨子對象許
27、多觀察者88888概念:觀察者取消注冊 56 Step1.不想當(dāng)觀察者啦,老鼠申請被除名Step2.愿望實現(xiàn),老鼠被 除名老鼠對象老鼠對象許多觀察者Step3.清靜啦!主題對象有新數(shù)據(jù)更新時,老鼠也不會接到通知啦14141414觀察者模式觀察者模式定義了主題對象和觀察者對象之間的一對多依賴,當(dāng)主題對象的狀態(tài)改變時,依賴于它的所有觀察者都會收到通知并自動更新。 57 58 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)7觀察者模式觀察者模式語境/問題:不同類型的訂閱者對象如窗口對發(fā)布者對象如sale的狀態(tài)改變或事件感興趣。當(dāng)發(fā)布者產(chǎn)生一個事件時,訂閱者可以按自己的方式做出響應(yīng)。更進(jìn)一步,發(fā)布者希望維護(hù)和訂閱者
28、之間的松散耦合關(guān)系。如何實現(xiàn)?解決方案:定義“訂閱者或“監(jiān)聽者接口,各種類型的訂閱者實現(xiàn)此接口。發(fā)布者可以動態(tài)注冊對其事件感興趣的訂閱者,當(dāng)事件發(fā)生時通知已注冊的訂閱者。觀察者模式:類圖 59 通過引入Suject和Observer接口,將具體的發(fā)布者和觀察者解耦,使得增加新的觀察者不會影響到發(fā)布者,也使得觀察者可以連接到新的發(fā)布者。思考:增加Subject接口有什么用意?設(shè)計原那么:交互的對象之間盡量解耦。觀察者模式案例之二氣象站數(shù)據(jù)發(fā)布?xì)庀笳景咐龑崿F(xiàn) 60 上述設(shè)計是主題對象將數(shù)據(jù)Push給觀察者,push哪些數(shù)據(jù)是主題對象指定的,這樣就不具備靈活性,譬如各個觀察者需要的數(shù)據(jù)可能是不一樣的
29、,又譬如主題對象如果新增數(shù)據(jù)就要修改主題對象的notifyObservers()方法。能否改為pull方式,即主題對象提供一系列g(shù)et方法來對外提供數(shù)據(jù),觀察者擁有主題對象的引用,能調(diào)用這些get方法來獲取數(shù)據(jù),獲取哪些數(shù)據(jù)由觀察者自己決定。Java的Built-in Observer模式能同時提供Push和Pull兩種方式。 61 62 如何把對象變成觀察者:實現(xiàn)觀察者接口,然后調(diào)用任何Observable對象的addObserver()方法可觀察者要如何送出通知:1先調(diào)用setChanged()方法,標(biāo)記狀態(tài)已經(jīng)改變的事實;2然后調(diào)用兩種notifyObservers()方法中的一個not
30、ifyObservers() 或 notifyObservers(Object arg)觀察者如何接收通知:update(Observable o, Object arg),其中arg就是傳給觀察者的數(shù)據(jù)對象,采用pull模式時可觀察者傳null給arg。這就是我們以前所稱的“主題 Subject,現(xiàn)在改稱為“可觀察者Observable。我們不需要在此提供 register()、remove()和notifyObservers()方法,因為我們已經(jīng)從超類繼承了這些行為。為了精簡起見,此處沒有繪制DisplayElement接口,但是所有的布告板仍然必須實現(xiàn)此接口 63 4 觀察者模式應(yīng)用案例之二需求當(dāng)銷售總額變化時,刷新GUI窗口顯示的銷售總額。能否在Sale改變了銷售總額時,由Sale對象向窗口發(fā)送一條消息通知窗口刷新顯示?模型視圖別離原那么:模型對象非GUI對象,如sale應(yīng)不知道視圖和表示對象如窗口。它保證了表示層對象UI與其他層對象交互的低耦合度,從而允許用一個新的視圖或表示層來替代已有的視圖或表示層。 64 4 用GoF設(shè)計模式設(shè)計用例實現(xiàn)7觀察者模式
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 空調(diào)銷售安裝合同范本
- DB31∕T 693.3-2020 蔬菜工廠化育苗技術(shù)規(guī)程 第3部分:茄果類
- 八省聯(lián)考試卷分析(物理 西南聯(lián)大附中)
- 企業(yè)技術(shù)標(biāo)準(zhǔn)體系的建立、實施與評估
- 酒店承包經(jīng)營合同書
- 員工股權(quán)轉(zhuǎn)讓協(xié)議書
- 副總經(jīng)理聘用協(xié)議
- 全新水磨石地坪施工合同年
- 2025年鞍山職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫附答案
- 成人住院患者靜脈血栓栓塞癥預(yù)防護(hù)理
- 三年級道德與法治3.我很誠實 說課一等獎
- 緩解抑郁和焦慮的心理技巧
- 疼痛科門診小針刀療法知情同意書
- 肝門膽管惡性腫瘤的護(hù)理查房
- 燒傷病人查房版
- 《發(fā)行債券》課件
- 校企合作模式下的高職院校人才培養(yǎng)研究
- 二房東可行性方案計劃書
- 環(huán)境設(shè)計就業(yè)需求分析報告
- 中草藥不良反應(yīng)的監(jiān)測與評價
評論
0/150
提交評論