版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)戰(zhàn)java程序設(shè)計(jì)課后答案第十八章設(shè)計(jì)模式 選擇題AB ABCBD簡(jiǎn)答題1.設(shè)計(jì)模式分為幾類?每類中又包含哪些設(shè)計(jì)模式?答:設(shè)計(jì)模式分為三種類型,共23個(gè)。
一、創(chuàng)建型模式:?jiǎn)卫J?、抽象工廠模式、建造者模式、工廠模式、原型模式。二、結(jié)構(gòu)型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。三、行為型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態(tài)模式、策略模式、職責(zé)鏈模式、訪問(wèn)者模式。2.單例模式的作用及應(yīng)用場(chǎng)景。作用:讓一個(gè)類只能創(chuàng)建一個(gè)實(shí)例(因?yàn)轭l繁的創(chuàng)建對(duì)象,回收對(duì)象會(huì)造成系統(tǒng)性能下降。)。解決對(duì)象的唯一性,保證了內(nèi)存中一個(gè)對(duì)象是唯一的
應(yīng)用場(chǎng)景:當(dāng)前對(duì)象的創(chuàng)建比較消耗資源,我們?cè)谑褂眠@個(gè)對(duì)象時(shí)只需要有一個(gè)就可以應(yīng)用。這個(gè)時(shí)候就可以將其設(shè)計(jì)成單例的模式。在一定的場(chǎng)景中,只有一個(gè)這樣的實(shí)例,比如說(shuō)銀行的號(hào)碼管理器等。java連接數(shù)據(jù)庫(kù),與數(shù)據(jù)庫(kù)的連接會(huì)比較消耗資源。我們可以將其做成單例的,
這個(gè)時(shí)候在內(nèi)存中就有一個(gè),所有人操作的都是一個(gè)。觀察者模式的作用及應(yīng)用場(chǎng)景。作用:觀察者模式是對(duì)象的行為模式,又叫發(fā)布-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、源-監(jiān)聽(tīng)器(Source/Listener)模式或從屬者(Dependents)模式。觀察者模式定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象。這個(gè)主題對(duì)象在狀態(tài)上發(fā)生變化時(shí),會(huì)通知所有觀察者對(duì)象,使它們能夠自動(dòng)更新自己。應(yīng)用場(chǎng)景:1、對(duì)一個(gè)對(duì)象狀態(tài)的更新,需要其他對(duì)象同步更新,而且其他對(duì)象的數(shù)量動(dòng)態(tài)可變。
2、對(duì)象僅需要將自己的更新通知給其他對(duì)象而不需要知道其他對(duì)象的細(xì)節(jié)代理模式的作用及應(yīng)用場(chǎng)景作用:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介作用。應(yīng)用:如果我們要買一輛轎車必須通過(guò)汽車4S店,汽車4s店就是充當(dāng)代理角色,其目的就是控制買車客戶的買車行為,必須通過(guò)汽車4S店才能從汽車廠商買一輛車。編碼題盡可能寫出你知道的設(shè)計(jì)模式:一、創(chuàng)建型模式:?jiǎn)卫J?、抽象工廠模式、建造者模式、工廠模式、原型模式。二、結(jié)構(gòu)型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。三、行為型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態(tài)模式、策略模式、職責(zé)鏈模式、訪問(wèn)者模式。2.模仿書中代理模式的示例,自己想一個(gè)生活中的案例,進(jìn)行模仿。模擬氣象站發(fā)送天氣信息給布告板,然后布告板把天氣信息顯示在板上的例子publicinterfaceSubject{//觀察者注冊(cè)publicvoidregisterObserver(Observero);//刪除觀察者publicvoidremoveObserver(Observero);//當(dāng)主題有內(nèi)容更新時(shí)調(diào)用,用于通知觀察者publicvoidnotifyObserver();} /** *觀察者 */ publicinterfaceObserver{ //當(dāng)氣象站觀測(cè)的天氣發(fā)生變化時(shí),主題會(huì)把參數(shù)值傳給觀察者 publicvoidupdate(floattemp); }/***用于布告板顯示*/publicinterfaceDisplayElement{//在顯示布告板上顯示的操作publicvoiddisplay();}/***氣象站實(shí)現(xiàn)主題,發(fā)布?xì)庀笮畔ⅲ鉁兀?/publicclassWeatherStationimplementsSubject{privateArrayListobservers;privatefloattemp;publicWeatherStation(){//加個(gè)ArrayList存放所有注冊(cè)的Observer對(duì)象;observers=newArrayList<>();}@OverridepublicvoidregisterObserver(Observero){//當(dāng)新的觀察者注冊(cè)時(shí)添加進(jìn)來(lái)observers.add(o);}@OverridepublicvoidremoveObserver(Observero){//當(dāng)觀察者取消注冊(cè)時(shí)去除該觀察者inti=observers.indexOf(o);if(i>=0){observers.remove(i);}}@OverridepublicvoidnotifyObserver(){//更新?tīng)顟B(tài),調(diào)用Observer的update告訴觀察者有新的信息for(inti=0;i<observers.size();i++){Observerobserver=(Observer)observers.get(i);observer.update(temp);}}/**此方法用于氣象站收到的數(shù)據(jù),并且調(diào)用更新使數(shù)據(jù)實(shí)時(shí)通知給觀察者*/publicvoidsetMeasurements(floattemp){this.temp=temp;System.out.println("氣象站測(cè)量的溫度為:"+temp+"℃");notifyObserver();}}/***布告板上的狀態(tài)顯示*/publicclassConditionDisplayimplementsObserver,DisplayElement{privatefloattemp;privateSubjectweatherStation;publicConditionDisplay(SubjectweatherStation){//構(gòu)造時(shí)需要間主題/被觀察者對(duì)象作為注冊(cè)之用this.weatherStation=weatherStation;weatherStation.registerObserver(this);}@Overridepublicvoiddisplay(){//將數(shù)據(jù)顯示在布告板上System.out.println("布告板顯示當(dāng)前溫度為:"+temp+"℃");}@Overridepublicvoidupdate(floattemp){//接受來(lái)自主題/被觀察者(氣象站)的數(shù)據(jù)this.temp=temp;display();}}測(cè)試publicclassWeatherObserver{publicstaticvoidmain(String[]args){//首先創(chuàng)建一個(gè)主題/被觀察者WeatherStationweatherStation=newWeatherStation();//創(chuàng)建觀察者并將被觀察者對(duì)象傳入ConditionDisplayconditionDisplay=newConditionDisplay(weatherStation);//設(shè)置氣象站模擬收到的氣溫?cái)?shù)據(jù)weatherStation.setMeasurements(25);weatherStation.setMeasurements(24);weatherStation.setMeasurements(23);}}查資料,閱讀AWT或Swing源碼,完成模仿事件監(jiān)聽(tīng)的代碼。/***新建一個(gè)點(diǎn)擊事件的接口Clickable.java。*只負(fù)責(zé)執(zhí)行點(diǎn)擊事件*/publicinterfaceClickable{//點(diǎn)擊事件voidonClick();}/***監(jiān)聽(tīng)器接口*@authorAdministrator**/publicinterfaceOnClickListener{voidonClick(Clickableclickable);}新建按鈕Button模仿button的點(diǎn)擊事件/***實(shí)現(xiàn)焦點(diǎn)監(jiān)聽(tīng)*位置監(jiān)聽(tīng)*顏色改變監(jiān)聽(tīng)*/publicclassButtonimplementsClickable{ //使用集合管理監(jiān)聽(tīng)器 privatestaticList<OnClickListener>onClickListeners=newArrayList<OnClickListener>(); /** *添加監(jiān)聽(tīng) *@paramonClickListener */ privatevoidaddClickListener(OnClickListeneronClickListener){ onClickListeners.add(onClickListener); } /** *移除監(jiān)聽(tīng) *@paramonClickListener */ privatevoidremove(OnClickListeneronClickListener){ onClickListeners.remove(onClickListener); } publicinterfaceOnClickListener{ publicvoidonClick(Clickableclickable); } //如果我們需要執(zhí)行所有被監(jiān)聽(tīng)對(duì)象工作的時(shí)候 @Override publicvoidonClick(){ for(OnClickListeneronClickListener:onClickListeners){ onClickListener.onClick(this); } } /** *顏色改變的監(jiān)聽(tīng)器 */ publicstaticabstractclassOnColorListenerimplementsOnClickListener{ @Override publicvoidonClick(Clickableclickable){ if(true){ colorChanged(); } } publicabstractvoidcolorChanged(); } /** *設(shè)置監(jiān)聽(tīng)器 * *@paramonClickListener */ publicvoidsetOnClickListener(OnClickListeneronClickListener){ if(onClickListener!=null){ onClickListener.onClick(this); } //添加到管理監(jiān)聽(tīng)器的集合內(nèi) addClickListener(onClickListener); } /** *位置監(jiān)聽(tīng)器 * *@authorAdministrator * */ publicstaticabstractclassOnCoordinateListenerimplementsOnClickListener{ @Override publicvoidonClick(Clickableclickable){ if(true){ coordinateChanged(); } } publicabstractvoidcoordinateChanged(); } /** *焦點(diǎn)監(jiān)聽(tīng)器 *@authorAdministrator */ publicstaticabstractclassOnFocusListenerimplementsOnClickListener{ @Override publicvoidonClick(Clickableclickable){ if(true){ onFocusChanged(); } } publicabstractvoidonFocusChanged(); }}測(cè)試publicclassTest{ publicstaticvoidmain(String[]args){ Buttonbtn=newButton(); btn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Clickableclickable){ System.out.println("回調(diào)方法"); } }); newButton().setOnClickListener(newButton.OnColorListener(){ @Override publicvoidcolorChanged(){ System.out.println("顏色改變的監(jiān)聽(tīng)"); } }); newButton().setOnClickListener(newButton.OnCoordinateListener(){ @Override publicvoidcoordinateChanged(){ System.out.println("位置改變監(jiān)聽(tīng)"); } }); newButton().setOnClickListener(newButton.OnFocusListener(){ @Override publicvoidonFocusChanged(){ System.out.println("焦點(diǎn)改變的監(jiān)聽(tīng)"); } }); }}4.查閱資料,模仿Spring框架的JDBCTemplate類,完成模仿代碼。publicinterfaceIStatementCallback{publicObjectdoInStatement(Statementstmt)throwsRuntimeException,SQLException;}//模板模式模仿SpringJdbcTemplate類publicclassJdbcTemplate{ publicObjectexecute(IStatementCallbackaction){ Connectionconn=null; Statementstmt=null; Objectresult=null; try{ conn=this.getConnection(); conn.setAutoCommit(false); stmt=conn.createStatement(); //注意這一句 result=action.doInStatement(stmt); mit(); conn.setAutoCommit(true); }catch(SQLExceptione){ transactionRollback(conn);//進(jìn)行事務(wù)回滾 e.printStackTrace(); thrownewRuntimeException(e); }finally{ this.closeStatement(stmt); this.closeConnection(conn); } returnresult; } /* *當(dāng)發(fā)生異常時(shí)進(jìn)行事務(wù)回滾 */ privatevoidtransactionRollback(Connectionconn){ if(conn!=null){ try{ conn.rollback(); }catch(SQLExceptione){ e.printStackTrace(); } } } //關(guān)閉打開(kāi)的Statement privatevoidcloseStatement(Statementstmt){ if(stmt!=null){ try{ stmt.close(); stmt=null; }catch(SQLExceptione){ e.printStackTrace(); } } } //關(guān)閉打開(kāi)的Connection privatevoidcloseConnection(Connectionconn){ if(conn!=null){ try{ conn.close(); conn=null; }catch(SQLExceptione){ e.printStackTrace(); } } } //取得一個(gè)Connction privateConnectiongetConnection(){ Stringdriver="com.mysql.jdbc.Driver"; Stringurl="jdbc:mysql:///sxt"; Connectionconn=null; try{ Class.forName(driver); conn=DriverManager.getConnection(url,"sxt","sxt"); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(SQLExceptione){ e.printStackTrace(); } returnconn; }}測(cè)試publicclassTest{ publicstaticvoidmain(String[]args){ newTest().testJdbcTemp(); } privatevoidtestJdbcTemp(){ JdbcTemplatejt=newJdbcTemplate();/**因?yàn)镮StatementCallback是一個(gè)接口,所以我們?cè)谶@里直接用一個(gè)匿名類來(lái)實(shí)現(xiàn)*如果已經(jīng)正確的插入啦一條數(shù)據(jù)的話,它會(huì)正確的返回一個(gè)整數(shù)1*而我們這里的stmt是從JdbcTemplate中傳過(guò)來(lái)的*/intcount=(Integer)jt.execute(newIStatementCallback(){publicObjectdoInStatement(Statementstmt)throwsRuntimeException,SQLException{Stringsql="INSERTINTOpersonVALUES(1,'sxt','sxt')";intresult=stmt.executeUpdate(sql);returnnewInteger(result);}});System.out.println("Count:"+count);//讀取剛剛插入的數(shù)據(jù)jt.execute(newIStatementCallback(){publicObjectdoInStatement(Statementstmt)throwsRuntimeException,SQLException{Stringsql="SELECTname,passwordFROMpersonWHEREid=1";ResultSetrs=null;rs=stmt.executeQuery(sql);Personp=null;if(rs.next()){p=newPerson(rs.getString("name"),rs.getString("password"));System.out.println(p);}returnp;}}); }}以身邊的場(chǎng)景出發(fā),測(cè)試裝飾器模式假設(shè)我們現(xiàn)在去咖啡店要了一杯咖啡,可以加奶、加糖等等??Х群湍?、糖分別有不同的價(jià)格。
咖啡就是我們的組件,奶和糖是我們的裝飾者,現(xiàn)在我們要計(jì)算調(diào)制這樣一杯咖啡花費(fèi)多少。publicinterfaceDrink{publicfloatcost();publicStringgetDescription();}publicclassCoffeeimplementsDrink{ finalprivateStringdescription="coffee";//每杯coffee售價(jià)10元 publicfloatcost(){return10;} publicStringgetDescription(){returndescription;}}//調(diào)味抽象類publicabstractclassCondimentDecoratorimplementsDrink{protectedDrinkdecoratorDrink;publicCondimentDecorator(DrinkdecoratorDrink){this.decoratorDrink=decoratorDrink;}publicfloatcost(){returndecoratorDrink.cost();}publicStringgetDescription(){returndecoratorDrink.getDescription();}}//裝飾類牛奶publicclassMilkextendsCondimentDecorator{publicMilk(DrinkdecoratorDrink){super(decoratorDrink);}@Overridepublicfloatcost(){returnsuper.cost()+2;}@OverridepublicStringgetDescription(){returnsuper.getDescription()+"milk";}}/***裝飾類糖*@authorAdministrator**/publicclassSugarextendsCondimentDecorator{publicSugar(DrinkdecoratorDrink){super(decoratorDrink);}@Overridepublicfloatcost(){returnsuper.cost()+1;}@OverridepublicStringgetDescription(){returnsuper.getDescription()+"sugar";}}//測(cè)試publicclassShop{ publicstaticvoidmain(String[]args){ //點(diǎn)一杯coffee Drinkdrink=newCoffee(); System.out.println(drink.getDescription()+":"+drink.cost()); //加一份奶 drink=newMilk(drink); System.out.println(drink.getDescription()+":"+drink.cost()); //加一份糖 drink=newSugar(drink); System.out.println(drink.getDescription()+":"+drink.cost()); //再加一份糖 drink=newSugar(drink); System.out.println(drink.getDescription()+":"+drink.cost()); }}使用責(zé)任鏈模式完成在公司中的審批流程。/***封裝采購(gòu)信息*/publicclassPurchaseRequest{ privatedoubleMoney; privateStringreason; privateStringname; publicdoublegetMoney(){ returnMoney; } publicvoidsetMoney(doublemoney){ Money=money; } publicPurchaseRequest(doublemoney,Stringreason,Stringname){ super(); Money=money; this.reason=reason; =name; } publicStringgetReason(){ returnreason; } publicvoidsetReason(Stringreason){ this.reason=reason; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name; } publicPurchaseRequest(){ super(); } @Override publicStringtoString(){ return"PurchaseRequest[Money="+Money+",reason="+reason+",name="+name+"]"; }}/***抽象類*/publicabstractclassLeader{ protectedStringname; protectedLeadernextLeader; publicLeader(Stringname){ super(); =name; } /** *設(shè)定責(zé)任鏈上的后繼對(duì)象 *@paramnextLeader */ publicvoidsetNextLeader(LeadernextLeader){ this.nextLeader=nextLeader; } publicabstractvoidhandleRequest(PurchaseRequestrequest);}//主任publicclassDirectorextendsLeader{ publicDirector(Stringname){ super(name); } @Override publicvoidhandleRequest(PurchaseRequestrequest){ if(request.getMoney()<5){ System.out.println("主任:"++"審批通過(guò)"); }else{ System.out.println("主任:金額超過(guò)限制,經(jīng)理審批"); if(this.nextLeader!=null){ this.nextLeader.handleRequest(request); } } }}//經(jīng)理publicclassManagerextendsLeader{ publicManager(Stringname){ super(name); //TODOAuto-generatedconstructorstub } @Override publicvoidhandleRequest(PurchaseRequestrequest){ if(request.getMoney()>=5&&request.getMoney()<10){ System.out.println("經(jīng)理:"++"審批通過(guò)"); }else{ System.out.println("經(jīng)理:金額超過(guò)限制,請(qǐng)副總經(jīng)理審批"); if(this.nextLeader!=null){ this.nextLeader.handleRequest(request); } } }}//副總經(jīng)理publicclassDeputyManagerextendsLeader{ publicDeputyManager(Stringname){ super(name); } @Override publicvoidhandleRequest(PurchaseRequestrequest){ if(request.getMoney()>=10&&request.getMoney()<20){ System.out.println("副總經(jīng)理:"++"審批通過(guò)"); }else{ System.out.println("副總經(jīng)理:金額超過(guò)限制,請(qǐng)總經(jīng)理審批"); if(this.nextLeader!=null){ this.nextLeader.handleRequest(request); } } }}//總經(jīng)理publicclassGeneralManagerextendsLeader{ publicGeneralManager(Stringname){ super(name); } @Override publicvoidhandleRequest(PurchaseRequestrequest){ if(request.getMoney()>=20){ System.out.println("總經(jīng)理:"++"審批通過(guò)"); } }}//測(cè)試publicclassClient{ publicstaticvoidmain(String[]args){ Leaderl1=newDirector("李白"); Leaderl2=newManager("杜甫"); Leaderl3=newDeputyManager("白居易"); Leaderl4=newGeneralManager("武則天"); //組織責(zé)任鏈的對(duì)應(yīng)關(guān)系 l1.setNextLeader(l2); l2.setNextLeader(l3); l3.setNextLeader(l4); //開(kāi)始審批 PurchaseRequestp=newPurchaseRequest(25,"美國(guó)參加學(xué)術(shù)研討會(huì)","王安石"); System.out.println("員工:"+p.getName()+",預(yù)知金額:"+p.getMoney()+"萬(wàn)元"+",原因是:"+p.getReason()); System.out.println("================開(kāi)始審批==============="); l1.handleRequest(p); }}7.模擬富士康代工廠的場(chǎng)景,使用工廠模式創(chuàng)造:小米手機(jī),蘋果手機(jī)和OPPO手機(jī)產(chǎn)品接口publicinterfacePhone{ publicvoidstartWeChat();} 產(chǎn)品實(shí)現(xiàn)類 蘋果手機(jī)publicclassIPhoneimplementsPhone{ @Override publicvoidstartWeChat(){ System.out.println("蘋果手機(jī)正在運(yùn)行微信程序"); }} 小米手機(jī)publicclassMIPhoneimplementsPhone{ @Override publicvoidstartWeChat(){ System.out.println("小米手機(jī)正在運(yùn)行微信程序"); }} OPPO手機(jī) publicclassOPPOPhoneimplementsPhone{ @Override publicvoidstartWeChat(){ System.out.println("OPPO手機(jī)正在運(yùn)行微信程序"); }} 工廠接口 publicinterfaceFoxconnFatory{ publicPhoneproduceProcuct();} 工廠實(shí)現(xiàn)類 蘋果工廠 publicclassFoxconnIPhoneFactoryimplementsFoxconnFatory{ @Override publicPhoneproduceProcuct(){ returnnewIPhone(); }} 小米工廠 publicclassFoxconnMIPhoneFactoryimplementsFoxconnFatory{ @Override publicPhoneproduceProcuct(){ returnnewMIPhone(); }} OPPO工廠 publicclassFoxconnOPPOPhoneFactoryimplementsFoxconnFatory{ @Override
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)議接待服務(wù)師崗前操作評(píng)估考核試卷含答案
- 壓鑄模具工安全文化模擬考核試卷含答案
- 社會(huì)工作就業(yè)面試技巧
- 老年疼痛患者帕金森病疼痛方案
- 企業(yè)合同管理與審批制度
- 吊車吊載人吊籃培訓(xùn)課件
- 2026上半年安徽事業(yè)單位聯(lián)考銅陵市義安區(qū)招聘27人備考題庫(kù)及答案詳解(新)
- 軟件需求分析與設(shè)計(jì)規(guī)范指引
- 2026云南師范大學(xué)實(shí)驗(yàn)中學(xué)盤龍校區(qū)面向教育部直屬師范大學(xué)開(kāi)展公費(fèi)師范畢業(yè)生招聘?jìng)淇碱}庫(kù)及答案詳解1套
- 七年級(jí)下冊(cè)英語(yǔ) Unit 11 話題探索與語(yǔ)言應(yīng)用教學(xué)設(shè)計(jì)
- 兔子解剖實(shí)驗(yàn)報(bào)告
- 雙減背景下家校共育的問(wèn)題及策略
- 美國(guó)變壓器市場(chǎng)深度報(bào)告
- 建設(shè)工程第三方質(zhì)量安全巡查標(biāo)準(zhǔn)
- 管理養(yǎng)老機(jī)構(gòu) 養(yǎng)老機(jī)構(gòu)的服務(wù)提供與管理
- 乳化液處理操作規(guī)程
- 飯店轉(zhuǎn)讓協(xié)議合同
- 營(yíng)建的文明:中國(guó)傳統(tǒng)文化與傳統(tǒng)建筑(修訂版)
- 液化天然氣氣化站安全檢查表
- 2022年環(huán)保標(biāo)記試題庫(kù)(含答案)
- 2023年白銀有色集團(tuán)招聘筆試題庫(kù)及答案解析
評(píng)論
0/150
提交評(píng)論