版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1、工廠方法模式,1頁(yè),FACTORY METHOD請(qǐng)MM去麥當(dāng)勞吃漢堡,不同的MM有不同的口味,要每個(gè)都記住是一件煩人的事情,我一般采用Factory Method模式,帶著MM到服務(wù)員那兒,說(shuō)要一個(gè)漢堡,具體要什么樣的漢堡呢,讓MM直接跟服務(wù)員說(shuō)就行了。工廠方法模式:核心工廠類(lèi)不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建的工作交給子類(lèi)去做,成為一個(gè)抽象工廠角色,僅負(fù)責(zé)給出具體工廠類(lèi)必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類(lèi)應(yīng)當(dāng)被實(shí)例化這種細(xì)節(jié)。,缺:簡(jiǎn)單工廠模式、缺省適配模式和不變模式。,創(chuàng)建模式:簡(jiǎn)單工廠、工廠方法、抽象工廠、單例、建造、模型; 結(jié)構(gòu)模式:適配器、缺省適配、合成、裝飾、代理、享元、門(mén)
2、面、橋梁; 行為模式:不變、策略、模板方法、觀察者、迭代子、責(zé)任鏈、命令 備忘錄、狀態(tài)、訪問(wèn)者、解釋器、調(diào)停者。(最后三種不講),1,PPT學(xué)習(xí)交流,工廠方法模式是類(lèi)的創(chuàng)建模式,又叫虛擬構(gòu)造子(Virtual Constructor)模式或者多態(tài)性工廠(Polymorphic Factory)模式。 工廠方法模式的用意是定義一個(gè)創(chuàng)建產(chǎn)品對(duì)象的工廠接口,將實(shí)際工作推遲到子類(lèi)中。 工廠方法解決問(wèn)題: 工廠方法模式是簡(jiǎn)單工廠模式的進(jìn)一步抽象和推廣。由于使用了多態(tài)性,工廠方法模式保持了簡(jiǎn)單工廠模式的優(yōu)點(diǎn),而且克服了它的缺點(diǎn)。,2,PPT學(xué)習(xí)交流,工廠方法縮略圖,3,PPT學(xué)習(xí)交流,該模式的優(yōu)點(diǎn): 這種
3、抽象的結(jié)果,使這種工廠方法模式可以用來(lái)允許系統(tǒng)不修改具體工廠角色的情況下引進(jìn)新產(chǎn)品,這一特點(diǎn)無(wú)疑使得工廠模式具有超過(guò)簡(jiǎn)單工廠模式的優(yōu)越性。,4,PPT學(xué)習(xí)交流,在工廠方法模式中,一般都有一個(gè)平行的等級(jí)結(jié)構(gòu),也就是說(shuō)工廠和產(chǎn)品是對(duì)應(yīng)的的。抽象工廠對(duì)應(yīng)抽象產(chǎn)品,具體工廠對(duì)應(yīng)具體產(chǎn)品。簡(jiǎn)單的示意圖如下:,5,PPT學(xué)習(xí)交流,各種角色分類(lèi),抽象工廠角色: 具體工廠角色: 抽象產(chǎn)品角色: 具體產(chǎn)品角色:,6,PPT學(xué)習(xí)交流,2、簡(jiǎn)單工廠模式,主講人:陳儒 組員:韓政高、戴鵬軍、陳群,1頁(yè),7,PPT學(xué)習(xí)交流,簡(jiǎn)單的介紹,簡(jiǎn)單工廠模式是創(chuàng)建型模式,用于對(duì)象的創(chuàng)建,它不屬于23種gof設(shè)計(jì)模式。它是工廠模式
4、家族中最簡(jiǎn)單實(shí)用的模式,可以理解為是不同工廠模式的一個(gè)特殊實(shí)現(xiàn)。 設(shè)計(jì)模式描述了軟件設(shè)計(jì)過(guò)程中某一類(lèi)常見(jiàn)問(wèn)題的一般性的解決方案,是解決某個(gè)方向上的變動(dòng)需求的問(wèn)題。而工廠設(shè)計(jì)模式的存在是為了解決哪一方面的問(wèn)題呢?或者說(shuō)它的動(dòng)機(jī)是什么呢?,8,PPT學(xué)習(xí)交流,動(dòng)機(jī),在軟件系統(tǒng)中,經(jīng)常面臨著“某個(gè)對(duì)象”的創(chuàng)建工作;由于需求的變化,這個(gè)對(duì)象經(jīng)常面臨著劇烈的變化,但是它卻擁有比較穩(wěn)定的接口。 如何應(yīng)對(duì)這種變化?如何提供一種“封裝機(jī)制”來(lái)隔離出“這個(gè)易變對(duì)象”的變化,從而保持系統(tǒng)中“其他依賴(lài)該對(duì)象的對(duì)象”不隨著需求改變而改變?,9,PPT學(xué)習(xí)交流,優(yōu)缺點(diǎn),優(yōu)點(diǎn):簡(jiǎn)單工廠模式主要用于隔離類(lèi)對(duì)象的使用者和具體
5、類(lèi)型之間的耦合關(guān)系。面對(duì)一個(gè)經(jīng)常變化的具體類(lèi)型,緊耦合關(guān)系會(huì)導(dǎo)致軟件的脆弱。通過(guò)使用工廠類(lèi),外界可以從直接創(chuàng)建具體產(chǎn)品對(duì)象的尷尬局面擺脫出來(lái),僅僅需要負(fù)責(zé)“消費(fèi)”對(duì)象就可以了。而不必管這些對(duì)象究竟如何創(chuàng)建及如何組織的明確了各自的職責(zé)和權(quán)利,有利于整個(gè)軟件體系結(jié)構(gòu)的優(yōu)化。 缺點(diǎn):由于工廠類(lèi)集中了所有實(shí)例的創(chuàng)建邏輯,違反了高內(nèi)聚責(zé)任分配原則,將全部創(chuàng)建邏輯集中到了一個(gè)工廠類(lèi)中;它所能創(chuàng)建的類(lèi)只能是事先考慮到的,如果需要添加新的類(lèi),則就需要改變工廠類(lèi)了。,10,PPT學(xué)習(xí)交流,3、抽象工廠模式 by: 繆丹權(quán) 柳敏乾 李青振,2頁(yè),FACTORY追MM少不了請(qǐng)吃飯了,麥當(dāng)勞的雞翅和肯德基的雞翅都是M
6、M愛(ài)吃的東西,雖然口味有所不同,但不管你帶MM去麥當(dāng)勞或肯德基,只管向服務(wù)員說(shuō)來(lái)四個(gè)雞翅就行了。麥當(dāng)勞和肯德基就是生產(chǎn)雞翅的Factory工廠模式:客戶(hù)類(lèi)和工廠類(lèi)分開(kāi)。消費(fèi)者任何時(shí)候需要某種產(chǎn)品,只需向工廠請(qǐng)求即可。消費(fèi)者無(wú)須修改就可以接納新產(chǎn)品。缺點(diǎn)是當(dāng)產(chǎn)品修改時(shí),工廠類(lèi)也要做相應(yīng)的修改。如:如何創(chuàng)建及如何向客戶(hù)端提供。,11,PPT學(xué)習(xí)交流,抽象工廠模式定義,對(duì)象創(chuàng)建型模式,又稱(chēng)Kit模式。 在中對(duì)Abstract Factory的意圖是這 樣描述的:為了創(chuàng)建一組相關(guān)或相互依賴(lài)的對(duì)象提供 一個(gè)接口,而且無(wú)需指定它們的具體類(lèi)。 有時(shí)候,幾個(gè)對(duì)象需要一種協(xié)調(diào)的方式實(shí)例化。例如 ,在處理用戶(hù)界面
7、時(shí),系統(tǒng)可能在一個(gè)操作系統(tǒng)上用 一組對(duì)象,在另一個(gè)系統(tǒng)上用另一組對(duì)象。Abstract Factory 確保系統(tǒng)根據(jù)情況獲得正確的對(duì)象。,12,PPT學(xué)習(xí)交流,產(chǎn)品族,產(chǎn)品族,是指位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中,功 能相關(guān)聯(lián)的產(chǎn)品組成的家族。比如下圖中,箭 頭所指就是三個(gè)功能相關(guān)聯(lián)的產(chǎn)品。它們位于 三個(gè)不同的等級(jí)結(jié)構(gòu)中的相同位置上,組成了 一個(gè)產(chǎn)品族。,13,PPT學(xué)習(xí)交流,為什么需要AF,14,PPT學(xué)習(xí)交流,為什么需要AF,如果,現(xiàn)在有三個(gè)相似的工廠等級(jí)結(jié)構(gòu),那么采 用工廠方法模式就勢(shì)必要使用三個(gè)獨(dú)立的工廠等級(jí) 結(jié)構(gòu)。由于三個(gè)等級(jí)結(jié)構(gòu)相似性,會(huì)導(dǎo)致三個(gè)平行 的等級(jí)結(jié)構(gòu)。隨著產(chǎn)品等級(jí)結(jié)構(gòu)的數(shù)目增加,
8、工廠 方法模式所給出的工廠等級(jí)結(jié)構(gòu)的數(shù)目也會(huì)增加。,15,PPT學(xué)習(xí)交流,抽象工廠模式結(jié)構(gòu)圖,16,PPT學(xué)習(xí)交流,結(jié)構(gòu)與角色,抽象工廠 (AbstractFactory)角色: 擔(dān)任這個(gè)角色的是工廠方法模式的核心,它是與應(yīng)用系統(tǒng)的商業(yè)邏輯無(wú)關(guān)的。通常使用JAVA接口或者抽象JAVA類(lèi)來(lái)實(shí)現(xiàn),而所有的具體工廠類(lèi)必須實(shí)現(xiàn)該接口或者繼承抽象類(lèi)。 具體工廠類(lèi) (Conrete Factory)角色: 這個(gè)角色直接在客戶(hù)端的調(diào)用下創(chuàng)建產(chǎn)品的實(shí)例。這個(gè)角色含有選擇合適的產(chǎn)品對(duì)象的邏輯。通常使用具體類(lèi)來(lái)實(shí)現(xiàn)這個(gè)角色。 抽象產(chǎn)品(Abstract Product)角色: 擔(dān)任這個(gè)角色的類(lèi)是工廠方法模式所創(chuàng)建
9、的對(duì)象的父類(lèi),或它們共同擁有的接口。通常使用接口或者抽象類(lèi)來(lái)實(shí)現(xiàn)這一角色。 具體產(chǎn)品(Concrete Product)角色: 抽象工廠模式所創(chuàng)建的任何產(chǎn)品對(duì)象都是某一個(gè)具體產(chǎn)品類(lèi)的實(shí)例。通常使用具體JAVA類(lèi)來(lái)實(shí)現(xiàn)。,17,PPT學(xué)習(xí)交流,抽象工廠模式時(shí)序圖,在客戶(hù)新建一個(gè)抽象工廠的時(shí)候,其實(shí)是新建了一個(gè)具體的工廠,然后再通過(guò) 該具體工廠來(lái)創(chuàng)建各種具體的產(chǎn)品。,18,PPT學(xué)習(xí)交流,抽象工廠模式優(yōu)缺點(diǎn),優(yōu)點(diǎn): 程序設(shè)計(jì)中有三種耦合:零耦合、抽象耦合、具體耦合。抽象工廠設(shè)計(jì)可以很好的把具體耦合轉(zhuǎn)換到抽象耦合來(lái)減少耦合程度。 具體產(chǎn)品從客戶(hù)代碼中被分離出來(lái)。 容易改變產(chǎn)品的系列。 將一個(gè)系列的產(chǎn)
10、品族統(tǒng)一到一起創(chuàng)建。,19,PPT學(xué)習(xí)交流,抽象工廠模式優(yōu)缺點(diǎn),缺點(diǎn): 由于每個(gè)類(lèi)的產(chǎn)生都要繼承抽象類(lèi)(或接口),并由工廠來(lái)創(chuàng)建,這樣就增加了代碼長(zhǎng)度和工作量。 在產(chǎn)品族中擴(kuò)展新的產(chǎn)品是很困難的,它需要修改抽象工廠的接口。 使軟件結(jié)構(gòu)更復(fù)雜。,20,PPT學(xué)習(xí)交流,與其他模式的區(qū)別和聯(lián)系,與工廠模式的區(qū)別: 工廠方法模式是一種極端情況的抽象工廠模式,而抽象工廠模式可以看成是工廠方法模式的推廣。 工廠方法模式用來(lái)創(chuàng)建一個(gè)產(chǎn)品的等級(jí)結(jié)構(gòu)的,而抽象工廠模式是用來(lái)創(chuàng)建多個(gè)產(chǎn)品的等級(jí)結(jié)構(gòu)的。 工廠方法模式只有一個(gè)抽象產(chǎn)品類(lèi),而抽象工廠模式有多個(gè)抽象產(chǎn)品類(lèi)。,21,PPT學(xué)習(xí)交流,總結(jié),工廠的實(shí)現(xiàn)通常使用
11、Singleton模式。一個(gè)應(yīng)用中一般每個(gè)系列產(chǎn)品只需要使用一個(gè)具體工廠的實(shí)例。 抽象工廠模式提供了一個(gè)創(chuàng)建一系列相關(guān)或相互依賴(lài)的對(duì)象的接口,關(guān)鍵點(diǎn)在于應(yīng)對(duì)”多系列對(duì)象創(chuàng)建”的需求變化。 學(xué)會(huì)抽象工廠模式,可以更好地理解面向?qū)ο笾械脑瓌t: 面向接口編程,而不要面向?qū)崿F(xiàn)編程。,22,PPT學(xué)習(xí)交流,組員:湯仲喆 王凱 李義冬 主講:湯仲喆 代碼:王凱 答辯:李義冬,4、The Singleton Pattern (單例模式),1頁(yè),SINGLETON俺有6個(gè)漂亮的老婆,她們的老公都是我,我就是我們家里的老公Sigleton,她們只要說(shuō)道老公,都是指的同一個(gè)人,那就是我(剛才做了個(gè)夢(mèng)啦,哪有這么好
12、的事)單例模式:?jiǎn)卫J酱_保某一個(gè)類(lèi)只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例單例模式。單例模式只應(yīng)在有真正的單一實(shí)例的需求時(shí)才可使用。,23,PPT學(xué)習(xí)交流,什么是單例模式 顧名思義,單例模式的意思就是只有一個(gè)實(shí)例。單例模式確保某一個(gè)類(lèi)只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。這個(gè)類(lèi)稱(chēng)為單例類(lèi)。 單例模式的要點(diǎn) (1)某個(gè)類(lèi)只能有一個(gè)實(shí)例; (2)它必須自行創(chuàng)建這個(gè)實(shí)例; (3)它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。,解決方案-單例模式,24,PPT學(xué)習(xí)交流,意圖:希望類(lèi)只有一個(gè)實(shí)例,但沒(méi)有控制類(lèi)實(shí)例化的全局變量(對(duì)象)。同時(shí)希望確保所有客體對(duì)象使用該類(lèi)的相同實(shí)例,而無(wú)需將
13、引用傳給它們。 問(wèn)題:幾個(gè)不同的客戶(hù)對(duì)象需要引用同一個(gè)對(duì)象,而且希望確保這種類(lèi)型的對(duì)象數(shù)目不超過(guò)一個(gè)。 解決方案:保證一個(gè)實(shí)例 參與者與協(xié)作者:客戶(hù)對(duì)象只能通過(guò)getInstance()方法創(chuàng)建單例類(lèi)的實(shí)例。 效果:客戶(hù)對(duì)象無(wú)需操心是否存在單例類(lèi)的實(shí)例,實(shí)例化有單例類(lèi)自己控制。 實(shí)現(xiàn): 一個(gè)引用單例對(duì)象的靜態(tài)私有成員變量 一個(gè)公共靜態(tài)方法,負(fù)責(zé)實(shí)現(xiàn)一次性的實(shí)例化并返回對(duì)單例對(duì)象的引用 設(shè)置為保護(hù)或私有的構(gòu)造方法,單例模式的關(guān)鍵特征,25,PPT學(xué)習(xí)交流,單例模式設(shè)計(jì)會(huì)產(chǎn)生什么問(wèn)題?,在多線程程序中,Singleton模式可能會(huì)出現(xiàn)一個(gè)問(wèn)題。 假設(shè)對(duì)getInstance()方法的兩個(gè)調(diào)用幾乎同
14、時(shí)發(fā)生,這種情況可能非常糟糕。此時(shí)會(huì)發(fā)生什么? 1.第一個(gè)線程檢查實(shí)例是否存在。因?yàn)閷?shí)例不存在,該線程執(zhí)行創(chuàng)建第一個(gè)實(shí)例的代碼部分。 2.然而,假設(shè)在實(shí)例化完成之前,另一個(gè)線程也來(lái)檢查實(shí)例成員變量是否為null。因?yàn)榈谝粋€(gè)線程還什么都沒(méi)有創(chuàng)建,實(shí)例成員變量仍然等于null,所以第二個(gè)線程也執(zhí)行了創(chuàng)建一個(gè)對(duì)象的代碼。 3.現(xiàn)在,兩個(gè)線程都執(zhí)行了Singleton對(duì)象的new操作,因此創(chuàng)建了兩個(gè)重復(fù)的對(duì)象。,26,PPT學(xué)習(xí)交流,懶漢式 VS 餓漢式,所以,到底使用哪一種方式,要看實(shí)際的需求。,餓漢式:靜態(tài)初始化方式,在啟動(dòng)加載單例類(lèi)時(shí)就實(shí)例化對(duì)象,只實(shí)例化一次,以后用到的時(shí)候就不需要再去實(shí)例化了
15、,加載類(lèi)的時(shí)候速度比較慢,但以后獲得對(duì)象時(shí)的速度比較快,該對(duì)象從加載到應(yīng)用結(jié)束一直占用資源。 懶漢式:相當(dāng)于一個(gè)延遲加載機(jī)制,即你需要這個(gè)對(duì)象時(shí)候才去實(shí)例化,加載類(lèi)的時(shí)候速度比較快,但以后獲得對(duì)象時(shí)的速度比較慢,該對(duì)象在整個(gè)應(yīng)用的生命周期只有一部分時(shí)間占用資源。面臨多線程訪問(wèn)的安全性問(wèn)題,需要做雙重鎖定處理才可以保證安全。,27,PPT學(xué)習(xí)交流,單例模式的應(yīng)用,一個(gè)隨機(jī)數(shù)產(chǎn)生的例子 在整個(gè)應(yīng)用程序中只需要一個(gè)類(lèi)的實(shí)例來(lái)產(chǎn)生隨機(jī)數(shù),客戶(hù)端程序從類(lèi)中獲取這個(gè)實(shí)例,調(diào)用這個(gè)實(shí)例的方法nextInt(),公用的方法訪問(wèn)需要進(jìn)行同步,這是單例模式需要解決的同步問(wèn)題。 參與者:Singleton定義一個(gè)I
16、nstance操作,允許客戶(hù)訪問(wèn)它的唯一實(shí)例,Instance是一個(gè)類(lèi)操作,負(fù)責(zé)創(chuàng)建自己的唯一實(shí)例。 協(xié)作關(guān)系:客戶(hù)只能通過(guò)Singleton的Instance操作訪問(wèn)一個(gè)Singleton的實(shí)例。,28,PPT學(xué)習(xí)交流,主講:范允易 小組成員:陳巧燕、劉秀穎、郭娟,5、建造者模式(Builder Pattern) -創(chuàng)建型模式,1頁(yè),BUILDERMM最?lèi)?ài)聽(tīng)的就是我愛(ài)你這句話了,見(jiàn)到不同地方的MM,要能夠用她們的方言跟她說(shuō)這句話哦,我有一個(gè)多種語(yǔ)言翻譯機(jī),上面每種語(yǔ)言都有一個(gè)按鍵,見(jiàn)到MM我只要按對(duì)應(yīng)的鍵,它就能夠用相應(yīng)的語(yǔ)言說(shuō)出我愛(ài)你這句話了,國(guó)外的MM也可以輕松搞掂,這就是我的我愛(ài)你bu
17、ilder。(這一定比美軍在伊拉克用的翻譯機(jī)好賣(mài))建造模式:將產(chǎn)品的內(nèi)部表象和產(chǎn)品的生成過(guò)程分割開(kāi)來(lái),從而使一個(gè)建造過(guò)程生成具有不同的內(nèi)部表象的產(chǎn)品對(duì)象。建造模式使得產(chǎn)品內(nèi)部表象可以獨(dú)立的變化,客戶(hù)不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié)。建造模式可以強(qiáng)制實(shí)行一種分步驟進(jìn)行的建造過(guò)程。,29,PPT學(xué)習(xí)交流,概述,Builder模式是一種創(chuàng)建型模式,它主要是應(yīng)對(duì)項(xiàng)目中一些復(fù)雜對(duì)象的創(chuàng)建工作。 所謂“復(fù)雜對(duì)象”是指:此對(duì)象中還含有其它的子對(duì)象。 意圖: 將一個(gè)復(fù)雜的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。 -設(shè)計(jì)模式GOF,30,PPT學(xué)習(xí)交流,Builder模式結(jié)構(gòu),建造者(Builder
18、)角色 具體建造者(Concrete Builder)角色 產(chǎn)品(Product)角色 指導(dǎo)者(Director)角色,31,PPT學(xué)習(xí)交流,時(shí)序圖,32,PPT學(xué)習(xí)交流,優(yōu)缺點(diǎn)和適用性,解耦了組裝過(guò)程和創(chuàng)建具體部件 職責(zé)分離 精細(xì)的控制創(chuàng)建過(guò)程 難于應(yīng)付“分步驟構(gòu)建算法”的需求變動(dòng) 適用性: 復(fù)雜的內(nèi)部結(jié)構(gòu) 相互依賴(lài)的各部分 創(chuàng)建過(guò)程獨(dú)立 各部分變化劇烈,組合算法相對(duì)穩(wěn)定,33,PPT學(xué)習(xí)交流,相關(guān)模式,抽象工廠(Abstract Factory)模式 共性:創(chuàng)建型模式、創(chuàng)建類(lèi)對(duì)象 區(qū)別: Abstract Factory模式:解決“系列對(duì)象”的需求變化 Builder模式:解決“對(duì)象部分”
19、的需求變化 總結(jié) Builder模式的實(shí)質(zhì)是:解決一個(gè)復(fù)雜對(duì)象的創(chuàng)建工作。明確變化的部分和相對(duì)穩(wěn)定的部分,隔離變化,解耦穩(wěn)定的組裝過(guò)程和變化的具體部件,使得我們不用去關(guān)心每個(gè)部件是如何組裝的;如何將具體部件和組裝算法隔離是要解決的問(wèn)題。,34,PPT學(xué)習(xí)交流,什么是原始模型模式? 屬于對(duì)象的創(chuàng)建模式。 通過(guò)給出一個(gè)原型對(duì)象來(lái)指明所要?jiǎng)?chuàng)建的對(duì)象的類(lèi)型,然后用復(fù)制這個(gè)原型對(duì)象的辦法創(chuàng)建出更多同類(lèi)型的對(duì)象。 結(jié)構(gòu): 第一種是簡(jiǎn)單形式 第二種是登記形式,6、原始模型模式,小組分工: 做報(bào)告:鄭遲 回答問(wèn)題:徐冰,俞棟輝 代碼:王煒,2頁(yè),PROTOTYPE跟MM用QQ聊天,一定要說(shuō)些深情的話語(yǔ)了,我搜
20、集了好多肉麻的情話,需要時(shí)只要copy出來(lái)放到QQ里面就行了,這就是我的情話prototype了。(100塊錢(qián)一份,你要不要)原始模型模式:通過(guò)給出一個(gè)原型對(duì)象來(lái)指明所要?jiǎng)?chuàng)建的對(duì)象的類(lèi)型,然后用復(fù)制這個(gè)原型對(duì)象的方法創(chuàng)建出更多同類(lèi)型的對(duì)象。原始模型模式允許動(dòng)態(tài)的增加或減少產(chǎn)品類(lèi),產(chǎn)品類(lèi)不需要非得有任何事先確定的等級(jí)結(jié)構(gòu),原始模型模式適用于任何的等級(jí)結(jié)構(gòu)。缺點(diǎn)是每一個(gè)類(lèi)都必須配備一個(gè)克隆方法。,35,PPT學(xué)習(xí)交流,簡(jiǎn)單形式,這種形式涉及到三個(gè)角色: 客戶(hù)(Client)角色:客戶(hù)類(lèi)提出創(chuàng)建對(duì)象的請(qǐng)求。 抽象原始(Prototype)角色:這是一個(gè)抽象角色,通常由一個(gè)java接口或java抽象類(lèi)
21、實(shí)現(xiàn)。此角色給出所有的具體原始類(lèi)所需要的接口。 具體原型(Concrete Prototype)角色:被復(fù)制的對(duì)象。此角色需要實(shí)現(xiàn)抽象的原型角色所要求的接口。,36,PPT學(xué)習(xí)交流,簡(jiǎn)單形式,UML圖,37,PPT學(xué)習(xí)交流,登記形式,這種形式涉及到三個(gè)角色: 客戶(hù)端(Client)角色:客戶(hù)端類(lèi)向管理員提出創(chuàng)建對(duì)象的請(qǐng)求。 抽象原型(Prototype)角色:這是一個(gè)抽象角色,通常由一個(gè)接口或抽象類(lèi)實(shí)現(xiàn)。 此角色給出所有的具體原型類(lèi)所需要的接口。 具體原型(ConcretePrototype)角色:被復(fù)制的對(duì)象。需要實(shí)現(xiàn)抽象原型角色所要求的接口。 原型管理器(PrototypeManager)
22、角色:創(chuàng)建具體原型類(lèi)的對(duì)象,并記錄每一個(gè)被創(chuàng)建的對(duì)象。,38,PPT學(xué)習(xí)交流,登記形式,UML圖,39,PPT學(xué)習(xí)交流,兩種形式的比較,簡(jiǎn)單形式和登記形式的原始模型模式各有其長(zhǎng)處和短處。 1)如果需要?jiǎng)?chuàng)建的原型對(duì)象數(shù)目較少而且比較固定的話,可以采取第一種形式,也即簡(jiǎn)單形式的原始模型模式。在這種情況下,原型對(duì)象的引用可以由客戶(hù)端自己保存。 2)如果要?jiǎng)?chuàng)建的原型對(duì)象數(shù)目不固定的話,可以采取第二種形式,也即登記形式的原始模型模式。在這種情況下,客戶(hù)端并不保存對(duì)原型對(duì)象的引用,這個(gè)任務(wù)被交給管理員對(duì)象。在復(fù)制一個(gè)原型對(duì)象之前,客戶(hù)端可以查看管理員對(duì)象是否已經(jīng)有一個(gè)滿(mǎn)足要求的原型對(duì)象。如果有,可以直接從
23、管理員類(lèi)取得這個(gè)對(duì)象引用;如果沒(méi)有,客戶(hù)端就需要自行復(fù)制此原型對(duì)象。,40,PPT學(xué)習(xí)交流,模式的實(shí)現(xiàn),1):淺復(fù)制(淺克?。┍粡?fù)制對(duì)象的所有變量都含有與原來(lái)的對(duì)象相同的值,而所有的對(duì)其他對(duì)象的引用都仍然指向原來(lái)的對(duì)象,換言之,淺復(fù)制僅僅復(fù)制所考慮的對(duì)象,而不復(fù)制它所引用的對(duì)象。2):深復(fù)制(深克?。┍粡?fù)制對(duì)象的所有的變量都含有與原來(lái)的對(duì)象相同的值,除去那些引用其他對(duì)象的變量。那些引用其他對(duì)象的變量將指向被復(fù)制過(guò)的新對(duì)象,而不再是原有的那些被引用的對(duì)象。換言之,深復(fù)制把要復(fù)制的對(duì)象所引用的對(duì)象都復(fù)制了一遍,而這種對(duì)被引用到的對(duì)象的復(fù)制叫做間接復(fù)制。,41,PPT學(xué)習(xí)交流,模式的實(shí)現(xiàn),利用串行化
24、來(lái)作深復(fù)制把對(duì)象寫(xiě)到流里的過(guò)程是串行化(Serilization)過(guò)程,非常形象的稱(chēng)為“冷凍”或是“腌咸菜”過(guò)程。而把對(duì)象從流中讀出來(lái)的并行化(Deserialization)過(guò)程叫做“解凍”或是“回鮮”過(guò)程。寫(xiě)到流里的是對(duì)象的一個(gè)拷貝,而原來(lái)對(duì)象仍然存在于JVM里面,因此“腌成咸菜”(串行化)的只是對(duì)象的一個(gè)拷貝。java咸菜(并行化)還可以回鮮。,42,PPT學(xué)習(xí)交流,模式的實(shí)現(xiàn),串行化的結(jié)構(gòu)圖,43,PPT學(xué)習(xí)交流,淺復(fù)制,UML圖,44,PPT學(xué)習(xí)交流,深復(fù)制,UML圖,45,PPT學(xué)習(xí)交流,原始模型模式的優(yōu)缺點(diǎn),特有的優(yōu)點(diǎn)(1):原始模型模式原許動(dòng)態(tài)地增加或減少產(chǎn)品類(lèi)。由于創(chuàng)建產(chǎn)品類(lèi)
25、實(shí)例的方法是產(chǎn)品類(lèi)內(nèi)部具有的,因此,增加新產(chǎn)品對(duì)整個(gè)結(jié)構(gòu)沒(méi)有影響。(2):原始模型模式提供簡(jiǎn)化的創(chuàng)建結(jié)構(gòu)。工廠方法模式常常需要有一個(gè)與產(chǎn)品類(lèi)等級(jí)結(jié)構(gòu)相同的等級(jí)結(jié)構(gòu),而原始模型模式就不需要這樣。(3):具有給一個(gè)應(yīng)用軟件動(dòng)態(tài)加載新功能的能力。例如,一個(gè)分析Web服務(wù)器的記錄文件的應(yīng)用軟件,針對(duì)每一種記錄文件格式,都可以由一個(gè)相應(yīng)的“格式類(lèi)”負(fù)責(zé)。如果出現(xiàn)了應(yīng)用軟件所不支持的新的Web服務(wù)器,只需要提供一個(gè)格式類(lèi)的克隆,并在客戶(hù)端登記即可,而不必給每個(gè)軟件的用戶(hù)提供一個(gè)全新的軟件包。(4):產(chǎn)品類(lèi)不需要非得有任何事先確定的等級(jí)結(jié)構(gòu),因?yàn)樵寄P湍J竭m合用于任何的等級(jí)結(jié)構(gòu)。 主要缺點(diǎn):每一個(gè)類(lèi)都必須
26、配備一個(gè)克隆方法,配備克隆方法需要對(duì)類(lèi)的功能進(jìn)行通盤(pán)考慮,這對(duì)于全新的類(lèi)來(lái)說(shuō)不是很難,而對(duì)于已經(jīng)有的類(lèi)不一定很容易,特別是當(dāng)一個(gè)類(lèi)引用不支持串行化的間接對(duì)象,或者引用含有循環(huán)結(jié)構(gòu)的時(shí)候。,46,PPT學(xué)習(xí)交流,7、The Adaptor Pattern(適配器模式),主講:顧祝燕 組員:耿惠、何振芬、朱金鳳,2頁(yè),ADAPTER在朋友聚會(huì)上碰到了一個(gè)美女Sarah,從香港來(lái)的,可我不會(huì)說(shuō)粵語(yǔ),她不會(huì)說(shuō)普通話,只好求助于我的朋友kent了,他作為我和Sarah之間的Adapter,讓我和Sarah可以相互交談了(也不知道他會(huì)不會(huì)耍我)適配器(變壓器)模式:把一個(gè)類(lèi)的接口變換成客戶(hù)端所期待的另一種
27、接口,從而使原本因接口原因不匹配而無(wú)法一起工作的兩個(gè)類(lèi)能夠一起工作。適配類(lèi)可以根據(jù)參數(shù)返還一個(gè)合適的實(shí)例給客戶(hù)端。,47,PPT學(xué)習(xí)交流,面向?qū)ο筌浖到y(tǒng)的適配問(wèn)題,假設(shè)我們已經(jīng)有一個(gè)軟件系統(tǒng),原來(lái)使用了一個(gè)第三方類(lèi)庫(kù)A。現(xiàn)在有一個(gè)新的第三方類(lèi)庫(kù)B,其功能等各方面都更加強(qiáng)大。我們希望用B來(lái)替換A,以改善我們的系統(tǒng)。但是B的接口與A不一樣。那怎么辦呢?,48,PPT學(xué)習(xí)交流,Adapter模式,定義 將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶(hù)端所期望的另一種接口,從而使原本因接口不匹配而無(wú)法在一起工作的兩個(gè)類(lèi)能夠在一起工作。 別名 包裝器Wrapper,49,PPT學(xué)習(xí)交流,Adapter模式,動(dòng)機(jī) 有時(shí),為復(fù)用
28、而設(shè)計(jì)的工具箱類(lèi)不能夠被復(fù)用的原因僅僅是因?yàn)樗慕涌谂c專(zhuān)業(yè)應(yīng)用領(lǐng)域所需要的接口不匹配(名稱(chēng)不一樣,參數(shù)不一樣,等等)。 我們可以改變工具箱類(lèi)使它兼容專(zhuān)業(yè)領(lǐng)域中的類(lèi)的接口,但前提是必須有這個(gè)工具箱的源代碼。然而即使我們得到了這些源代碼,修改工具箱也是沒(méi)有什么意義的;因?yàn)椴粦?yīng)該僅僅為了實(shí)現(xiàn)一個(gè)應(yīng)用,工具箱就不得不采用一些與特定領(lǐng)域相關(guān)的接口。動(dòng)機(jī)(續(xù)) 我們可以不用上面的方法,而定義一個(gè)適配器類(lèi),由它來(lái)適配工具箱的接口和專(zhuān)業(yè)應(yīng)用的接口。我們可以用兩種方法做這件事: 1) 繼承專(zhuān)業(yè)應(yīng)用類(lèi)的接口和工具箱類(lèi)的實(shí)現(xiàn)。這種方法對(duì)應(yīng)A d a p t e r模式的類(lèi)版本(多繼承) 2) 將工具箱類(lèi)的實(shí)例作為適
29、配器類(lèi)的組成部分,并且使用工具箱的接口實(shí)現(xiàn)適配器類(lèi)。這種方法對(duì)應(yīng)A d a p t e r模式的對(duì)象版本。,50,PPT學(xué)習(xí)交流,Adapter模式,適用性 以下情況使用A d a p t e r模式 你想使用一個(gè)已經(jīng)存在的類(lèi),而它的接口不符合你的需求。 你想創(chuàng)建一個(gè)可以復(fù)用的類(lèi),該類(lèi)可以與其他不相關(guān)的類(lèi)或不可預(yù)見(jiàn)的類(lèi)(即那些接口可能不一定兼容的類(lèi))協(xié)同工作。,51,PPT學(xué)習(xí)交流,Adapter模式,結(jié)構(gòu)(類(lèi)版本),52,PPT學(xué)習(xí)交流,Adapter模式,結(jié)構(gòu)(對(duì)象版本),53,PPT學(xué)習(xí)交流,基于類(lèi)的Adapter模式,基于類(lèi)的Adapter模式的一般結(jié)構(gòu)如下:Adaptee類(lèi)為Adap
30、ter的父類(lèi),Adaptee類(lèi)為適配源,適配目標(biāo)(接口)也是Adapter的父類(lèi);基于類(lèi)的Adapter模式比較適合應(yīng)用于Adapter想修改Adaptee的部分方法的情況。,54,PPT學(xué)習(xí)交流,基于對(duì)象的Adapter模式,基于對(duì)象的Adapter模式的一般結(jié)構(gòu)如下:Adaptee類(lèi)對(duì)象為Adapter所依賴(lài),適配目標(biāo)(接口)是Adapter的父類(lèi); 基于對(duì)象的Adapter模式比較適合應(yīng)用于Adapter想為Adaptee添加新的方法的情況。但在Adaptee類(lèi)的方法與Adapter類(lèi)的方法不同名而實(shí)現(xiàn)相同功能的情況下,我們一般也使用基于對(duì)象的Adapter模式,,55,PPT學(xué)習(xí)交流,
31、Adapter模式,參與者 Ta r g e t C l i e n t使用的與特定領(lǐng)域相關(guān)的“接口”。 C l i e n t 與符合Ta rg e t接口的對(duì)象協(xié)同的專(zhuān)業(yè)系統(tǒng)。 A d a p t e e 一個(gè)已經(jīng)存在的“接口”,它具有Client要求的功能但不符合Client的接口要求。這個(gè)接口需要適配。 A d a p t e r 對(duì)A d a p t e e的接口與Ta rg e t接口進(jìn)行適配,56,PPT學(xué)習(xí)交流,Adapter模式,協(xié)作 Client在A d a p t e r實(shí)例上調(diào)用一些操作(請(qǐng)求)。接著適配器調(diào)用A d a p t e e的操作實(shí)現(xiàn)這個(gè)請(qǐng)求。 效果(類(lèi)適配
32、器和對(duì)象適配器有不同的權(quán)衡) 類(lèi)適配器 用一個(gè)具體的A d a p t e r類(lèi)對(duì)A d a p t e e和Ta rg e t進(jìn)行匹配。結(jié)果是當(dāng)我們想要匹配一個(gè)類(lèi)以及所有它的子類(lèi)時(shí),類(lèi)A d a p t e r將不能勝任工作。 使得A d a p t e r可以重定義A d a p t e e的部分行為,因?yàn)锳 d a p t e r是A d a p t e e的一個(gè)子類(lèi)。 僅僅引入了一個(gè)對(duì)象,并不需要額外的指針以間接得到a d a p t e e。,57,PPT學(xué)習(xí)交流,Adapter模式,效果(類(lèi)適配器和對(duì)象適配器有不同的權(quán)衡) 對(duì)象適配器則 允許一個(gè)A d a p t e r與多個(gè)A
33、d a p t e e即A d a p t e e本身以及它的所有子類(lèi)(如果有子類(lèi)的話)同時(shí)工作。A d a p t e r也可以一次給所有的A d a p t e e添加功能。 使得重定義A d a p t e e的行為比較困難。這就需要生成A d a p t e e的子類(lèi)并且使得A d a p t e r引用這個(gè)子類(lèi)而不是引用A d a p t e e本身。,58,PPT學(xué)習(xí)交流,8、缺省適配模式(Default Adapter) -楊鵬、余暉、許超杰,1頁(yè),59,PPT學(xué)習(xí)交流,問(wèn)題的提出:魯智深的故事,這個(gè)抽象的天星類(lèi)便是一個(gè)適配器類(lèi),魯智深實(shí)際借助于適配器類(lèi)模式達(dá)到了剃度的目的。此適
34、配器類(lèi)實(shí)現(xiàn)了和尚接口所要求的所有方法。但是與通常的適配器模式不同的是,此適配器類(lèi)給出所有的方法的實(shí)現(xiàn)都是“平庸”的。這種“平庸化”的適配器模式稱(chēng)作缺省適配模式,60,PPT學(xué)習(xí)交流,缺省適配模式(Default Adapter),一、概述,缺省適配模式為一個(gè)接口提供缺省實(shí)現(xiàn),這樣子類(lèi)型可以從這個(gè)缺省實(shí)現(xiàn)進(jìn)行擴(kuò)展,而不必從原有接口進(jìn)行擴(kuò)展。當(dāng)不需要全部實(shí)現(xiàn)適配器接口提供的方法時(shí),可先設(shè)計(jì)一個(gè)抽象類(lèi)實(shí)現(xiàn)適配器接口,并為接口中每個(gè)方法提供一個(gè)默認(rèn)實(shí)現(xiàn)(空方法)。那么該抽象類(lèi)的子類(lèi)可有選擇地覆蓋父類(lèi)的某些方法來(lái)實(shí)現(xiàn)需求。,二、結(jié)構(gòu),61,PPT學(xué)習(xí)交流,缺省適配模式(Default Adapter),
35、Public interface AbstractService void serviceOperation1(); int serviceOperation2(); String serviceOperation3(); ,Public class ServiceAdapter implements AbstractService public void serviceOperation1() public int serviceOperation2()return 0; public String serviceOperation3()return null; ,62,PPT學(xué)習(xí)交流,缺省
36、適配模式小結(jié),在任何時(shí)候,如果不準(zhǔn)備實(shí)現(xiàn)一個(gè)接口的所有方法時(shí),就可以模仿Windo的做法制造一個(gè)抽象類(lèi),給出所有方法的平庸的實(shí)現(xiàn)。這樣從這個(gè)抽象類(lèi)繼承下去的子類(lèi)就不必實(shí)現(xiàn)所有的方法了。 適配器模式把一個(gè)類(lèi)的接口換成客戶(hù)端所期待的另一個(gè)接口。缺省適配模式-適配器模式的“平庸化”形式可以使所考察的類(lèi)不必實(shí)現(xiàn)不需要的那部分接口。,63,PPT學(xué)習(xí)交流,9、composite(合成)模式,講解人:陳敖 其他成員:黃文,林麗麗,林溫柔,2頁(yè),COMPOSITEMary今天過(guò)生日。我過(guò)生日,你要送我一件禮物。嗯,好吧,去商店,你自己挑。這件T恤挺漂亮,買(mǎi),這條裙子好看,買(mǎi),這個(gè)包也不錯(cuò),買(mǎi)。喂,買(mǎi)了三件了
37、呀,我只答應(yīng)送一件禮物的哦。什么呀,T恤加裙子加包包,正好配成一套呀,小姐,麻煩你包起來(lái)。.,MM都會(huì)用Composite模式了,你會(huì)了沒(méi)有?合成模式:合成模式將對(duì)象組織到樹(shù)結(jié)構(gòu)中,可以用來(lái)描述整體與部分的關(guān)系。合成模式就是一個(gè)處理對(duì)象的樹(shù)結(jié)構(gòu)的模式。合成模式把部分與整體的關(guān)系用樹(shù)結(jié)構(gòu)表示出來(lái)。合成模式使得客戶(hù)端把一個(gè)個(gè)單獨(dú)的成分對(duì)象和由他們復(fù)合而成的合成對(duì)象同等看待。,64,PPT學(xué)習(xí)交流,Composite模式,別名:部分-整體模式;組合模式;合成模式 要點(diǎn):如何設(shè)計(jì)單個(gè)對(duì)象和組合對(duì)象,使他們具有一致的操作接口。 Composite模式把部分和整體關(guān)系用樹(shù)結(jié)構(gòu)表示,是屬于對(duì)象的結(jié)構(gòu)模式。
38、Composite模式要對(duì)Composite的對(duì)象進(jìn)行管理,所以在一定位置給予對(duì)象的相關(guān)管理方法,如:add(),remove()等. Composite模式中對(duì)象的管理有兩種方案。 安全方式:此方式只允許樹(shù)枝構(gòu)件有對(duì)象的管理方法。 透明方式:此方式只允許樹(shù)枝和樹(shù)葉都有對(duì)象的管理方法,但樹(shù)葉對(duì)象中的管理方法無(wú)實(shí)際意義。,65,PPT學(xué)習(xí)交流,組成部分:,component構(gòu)件:抽象組合對(duì)象的公共行為接口 leaf構(gòu)件:樹(shù)葉對(duì)象,沒(méi)有下級(jí)子對(duì)象 composite構(gòu)件:樹(shù)枝對(duì)象,樹(shù)枝對(duì)象可以包含一個(gè)或多個(gè)其他樹(shù)枝或樹(shù)葉對(duì)象,66,PPT學(xué)習(xí)交流,UML示意圖:,67,PPT學(xué)習(xí)交流,安全方式:,
39、68,PPT學(xué)習(xí)交流,透明方式:,69,PPT學(xué)習(xí)交流,安全式特點(diǎn):錯(cuò)誤地調(diào)用會(huì)導(dǎo)致編譯時(shí)出錯(cuò) 透明式特點(diǎn):編譯時(shí)不會(huì)出錯(cuò),錯(cuò)誤地調(diào)用會(huì)導(dǎo)致拋出異常,70,PPT學(xué)習(xí)交流,優(yōu)點(diǎn): 可以清楚地定義分層次的復(fù)雜對(duì)象,表示對(duì)象的全部或部分層次,使得增加新構(gòu)件也更容易。 客戶(hù)端調(diào)用簡(jiǎn)單,客戶(hù)端可以一致的使用組合結(jié)構(gòu)或其中單個(gè)對(duì)象。 定義了包含葉子對(duì)象和容器對(duì)象的類(lèi)層次結(jié)構(gòu),葉子對(duì)象可以被組合成更復(fù)雜的容器對(duì)象,而這個(gè)容器對(duì)象又可以被組合,這樣不斷遞歸下去,可以形成復(fù)雜的樹(shù)形結(jié)構(gòu)。 很容易在組合體內(nèi)加入對(duì)象構(gòu)件,客戶(hù)端不必因?yàn)榧尤肓诵碌膶?duì)象構(gòu)件而更改原有代碼。,71,PPT學(xué)習(xí)交流,缺點(diǎn): 設(shè)計(jì)變得更加
40、抽象,對(duì)象的業(yè)務(wù)規(guī)則如果很復(fù)雜,則實(shí)現(xiàn)組合模式具有很大挑戰(zhàn)性,而且不是所有的方法都與葉子對(duì)象子類(lèi)都有關(guān)聯(lián)。 增加新構(gòu)件時(shí)可能會(huì)產(chǎn)生一些問(wèn)題,很難對(duì)容器中的構(gòu)件類(lèi)型進(jìn)行限制。,72,PPT學(xué)習(xí)交流,適用環(huán)境: 需要表示一個(gè)對(duì)象整體或部分層次,在具有整體和部分的層次結(jié)構(gòu)中,希望通過(guò)一種方式忽略整體與部分的差異,可以一致地對(duì)待它們。 讓客戶(hù)能夠忽略不同對(duì)象層次的變化,客戶(hù)端可以針對(duì)抽象構(gòu)件編程,無(wú)需關(guān)心對(duì)象層次結(jié)構(gòu)的細(xì)節(jié)。 對(duì)象的結(jié)構(gòu)是動(dòng)態(tài)的并且復(fù)雜程度不一樣,但客戶(hù)需要一致地處理它們。,73,PPT學(xué)習(xí)交流,10、裝飾模式,Presented by 馬慶 沈月云 彭怡然 姚敏,2頁(yè),DECORAT
41、ORMary過(guò)完輪到Sarly過(guò)生日,還是不要叫她自己挑了,不然這個(gè)月伙食費(fèi)肯定玩完,拿出我去年在華山頂上照的照片,在背面寫(xiě)上最好的的禮物,就是愛(ài)你的Fita,再到街上禮品店買(mǎi)了個(gè)像框(賣(mài)禮品的MM也很漂亮哦),再找隔壁搞美術(shù)設(shè)計(jì)的Mike設(shè)計(jì)了一個(gè)漂亮的盒子裝起來(lái).,我們都是Decorator,最終都在修飾我這個(gè)人呀,怎么樣,看懂了嗎?裝飾模式:裝飾模式以對(duì)客戶(hù)端透明的方式擴(kuò)展對(duì)象的功能,是繼承關(guān)系的一個(gè)替代方案,提供比繼承更多的靈活性。動(dòng)態(tài)給一個(gè)對(duì)象增加功能,這些功能可以再動(dòng)態(tài)的撤消。增加由一些基本功能的排列組合而產(chǎn)生的非常大量的功能。,74,PPT學(xué)習(xí)交流,1.裝飾模式介紹,75,PPT
42、學(xué)習(xí)交流,1.裝飾模式介紹,裝飾模式的定義 裝飾模式可以動(dòng)態(tài)的給一個(gè)對(duì)象附加一些功能。 使用裝飾模式擴(kuò)展功能不會(huì)產(chǎn)生類(lèi)爆炸。它采用的是合成方式,比繼承方式更加靈活。 裝飾模式要解決的問(wèn)題 提供一種修改類(lèi)的行為,而避免創(chuàng)建眾多的派生類(lèi)的途徑。,76,PPT學(xué)習(xí)交流,3.討論,面向?qū)ο笤O(shè)計(jì)的開(kāi)-閉原則 類(lèi)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改封閉。 目的是在不需修改已有代碼的情況下方便的擴(kuò)展類(lèi)的功能。按照這一原則設(shè)計(jì)的系統(tǒng)具有以下優(yōu)點(diǎn): 具有一定的適應(yīng)性和靈活性。 具有一定的穩(wěn)定性和延續(xù)性。 “對(duì)擴(kuò)展開(kāi)放,對(duì)修改封閉?!边@聽(tīng)起來(lái)自相矛盾啊!有哪些方法可以不修改已有代碼但又能擴(kuò)展其功能? 何時(shí)使用開(kāi)閉原則?,77,
43、PPT學(xué)習(xí)交流,3.討論,何謂裝飾?如何裝飾? 所謂裝飾就是將一個(gè)對(duì)象包裝起來(lái)。 在程序上也就是讓一個(gè)對(duì)象a包含另一個(gè)對(duì)象b。 a對(duì)應(yīng)的類(lèi)A是“裝飾類(lèi)”,b對(duì)應(yīng)的類(lèi)B是被裝飾類(lèi)。 如果要讓裝飾可以重復(fù),且不必考慮次序,那么裝飾的要點(diǎn)是裝飾者和被裝飾者具有相同的類(lèi)型(有共同的父類(lèi))。,78,PPT學(xué)習(xí)交流,3.討論,首先生成一個(gè)DarkRoast對(duì)象,DarkRoast Cost(),DarkRoast繼承了Beverage,擁有一個(gè)計(jì)算飲料價(jià)格的方法cost()。,79,PPT學(xué)習(xí)交流,3.討論,然后,DarkRoast Cost(),Mocha對(duì)象是裝飾者,他與被它裝飾的對(duì)象DarkRoas
44、t具有相同的類(lèi)型(是Beverage的子類(lèi)),也有一個(gè)cost()方法。,顧客想要mocha,所以我們創(chuàng)建一個(gè)Mocha對(duì)象,并用它包裝DarkRoast.,80,PPT學(xué)習(xí)交流,3.討論,再然后,whip對(duì)象是裝飾者,他與被它裝飾的對(duì)象DarkRoast具有相同的類(lèi)型,也有一個(gè)cost()方法。,顧客還想要whip,所以我們創(chuàng)建一個(gè)Whip對(duì)象,并用它包裝Mocha.,Whip,Cost(),81,PPT學(xué)習(xí)交流,3.討論,計(jì)算飲料的價(jià)格,調(diào)用最外層的裝飾者whip的cost(),whip再將計(jì)算任務(wù)委派給被它包裝的對(duì)象,得到一個(gè)價(jià)格后,再加上whip自己的價(jià)格.,Whip,Cost(),6
45、.50,82,PPT學(xué)習(xí)交流,Diagram,何謂委派?,83,PPT學(xué)習(xí)交流,3.討論,84,PPT學(xué)習(xí)交流,具體的咖啡品種,調(diào)味品裝飾者,不僅實(shí)現(xiàn)cost(),還要實(shí)現(xiàn)getDescription(),考慮一下本講開(kāi)頭的引例是如何實(shí)現(xiàn)的。,咖啡店的類(lèi)圖,85,PPT學(xué)習(xí)交流,Proxy pattern,11、 代理模式 小組成員:王建奇,王洪軍,嵇海鋒,吳水生,2頁(yè),PROXY跟MM在網(wǎng)上聊天,一開(kāi)頭總是hi,你好,你從哪兒來(lái)呀?你多大了?身高多少呀?這些話,真煩人,寫(xiě)個(gè)程序做為我的Proxy吧,凡是接收到這些話都設(shè)置好了自動(dòng)的回答,接收到其他的話時(shí)再通知我回答,怎么樣,酷吧。代理模式:代
46、理模式給某一個(gè)對(duì)象提供一個(gè)代理對(duì)象,并由代理對(duì)象控制對(duì)源對(duì)象的引用。代理就是一個(gè)人或一個(gè)機(jī)構(gòu)代表另一個(gè)人或者一個(gè)機(jī)構(gòu)采取行動(dòng)。某些情況下,客戶(hù)不想或者不能夠直接引用一個(gè)對(duì)象,代理對(duì)象可以在客戶(hù)和目標(biāo)對(duì)象直接起到中介的作用??蛻?hù)端分辨不出代理主題對(duì)象與真實(shí)主題對(duì)象。代理模式可以并不知道真正的被代理對(duì)象,而僅僅持有一個(gè)被代理對(duì)象的接口,這時(shí)候代理對(duì)象不能夠創(chuàng)建被代理對(duì)象,被代理對(duì)象必須有系統(tǒng)的其他角色代為創(chuàng)建并傳入。,86,PPT學(xué)習(xí)交流,代理模式的定義,代理模式(Proxy Pattern), 為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。在某些情況下 ,一個(gè)客戶(hù)不 想或者不能直接引用另一個(gè)對(duì)象
47、,而代理對(duì)象可以在客戶(hù)端和目標(biāo)對(duì)象之間起到中介的作用。 代理,指的就是一個(gè)角色代表另一個(gè)角色采取行動(dòng),就象在實(shí)驗(yàn)室,用代理上網(wǎng),我們?cè)O(shè)置一個(gè)代理地址把任何http請(qǐng)求轉(zhuǎn)發(fā)到代理軟件ccporxy或者squid,代理軟件再去請(qǐng)求實(shí)際的web服務(wù)器,而它把獲得的結(jié)果返回給用戶(hù),結(jié)束一次訪問(wèn)。,87,PPT學(xué)習(xí)交流,代理模式的基本UML類(lèi)圖,Subject obj = new Proxy (),88,PPT學(xué)習(xí)交流,代理模式的基本時(shí)序圖,89,PPT學(xué)習(xí)交流,代理模式一般涉及到的角色,抽象主題(Subject) 它是一個(gè)對(duì)象和它的代理所公用的接口,即realsubject 和proxy實(shí)例所實(shí)現(xiàn)的接
48、口,這樣就在任何使用realsubject的地方都可以使用Proxy。 實(shí)際主題(RealSubject) 實(shí)現(xiàn)抽象主題接口的類(lèi)。 代理(Proxy) 實(shí)現(xiàn)抽象主題接口的類(lèi),代理含有主題接口聲明的變量,用來(lái)存放realsubject角色的實(shí)例引用,這樣就可以控制對(duì)它所代理對(duì)象的訪問(wèn)。,90,PPT學(xué)習(xí)交流,代理模式的應(yīng)用,一般來(lái)說(shuō)分為幾種: 遠(yuǎn)程(Remote)代理:也就是為一個(gè)對(duì)象在不同的地址空間提供局部代表。這樣可以隱藏一個(gè)對(duì)象存在于不同地址空間的事實(shí)。 虛擬(Virtual)代理:根據(jù)需要將一個(gè)資源消耗很大或者比較復(fù)雜的對(duì)象延遲的真正需要時(shí)才創(chuàng)建。 比如說(shuō)你打開(kāi)一個(gè)很大的HTML網(wǎng)頁(yè)時(shí),
49、里面可能有很多的文字和圖片,但你還是可以很快的打開(kāi)它,此時(shí)你所看到的是所有的文字,但圖片卻是一張張的下載后才能看到。那些未打開(kāi)的圖片框,就是通過(guò)虛擬代理來(lái)代替了真實(shí)的圖片,此時(shí)代理存儲(chǔ)了真實(shí)圖片的路徑和尺寸。 保護(hù)(Protect or Access)代理:控制對(duì)一個(gè)對(duì)象的訪問(wèn)權(quán)限。一般用于對(duì)象有 不同權(quán)限的時(shí)候。 智能引用(Smart Reference)代理:當(dāng)調(diào)用真實(shí)對(duì)象時(shí),代理出來(lái)另外一些事,提供比對(duì)目標(biāo)對(duì)象額外的服務(wù)。 如:計(jì)算真實(shí)對(duì)象的引用次數(shù),這樣當(dāng)該對(duì)象沒(méi)有引用時(shí),可以自動(dòng)釋放它;或當(dāng)?shù)谝淮我靡粋€(gè)持久對(duì)象時(shí),將它裝入內(nèi)存;或在訪問(wèn)一個(gè)實(shí)際對(duì)象前,檢查是否已經(jīng)鎖定它,以確保其它
50、對(duì)象不能改變它。它們都是通過(guò)代理在訪問(wèn)一個(gè)對(duì)象時(shí)附加一些內(nèi)務(wù)處理。,91,PPT學(xué)習(xí)交流,動(dòng)機(jī) 1.為了在我們確實(shí)需要這個(gè)對(duì)象是才對(duì)它進(jìn)行創(chuàng)建和初始化。 2.用戶(hù)希望程序和某個(gè)對(duì)象打交道,程序不希望用戶(hù)直接訪問(wèn)該對(duì)象,為什么要使用Proxy模式?,92,PPT學(xué)習(xí)交流,代理模式的作用,Proxy模式在訪問(wèn)對(duì)象時(shí)引入了一定程度的間接性。根據(jù)代理的類(lèi)型,附加的間接性有多種用途: (1)遠(yuǎn)程代理可以隱藏一個(gè)對(duì)象存在于不同地址空間的事實(shí)。 (2)虛代理可以進(jìn)行最優(yōu)化,例如根據(jù)要求創(chuàng)建對(duì)象。 (3)保護(hù)代理和智能指針都允許訪問(wèn)一個(gè)對(duì)象時(shí)有一些附加的內(nèi)務(wù)處理。,93,PPT學(xué)習(xí)交流,遠(yuǎn)程代理( Remot
51、e Proxy ),為一個(gè)對(duì)象在不同的地址空間提供局部代表。這樣可以隱藏一個(gè)對(duì)象存在于不同地址空間的事實(shí)。 RMI(remote method invocation)是一種分布式技術(shù),使用RMI可以讓一個(gè)虛擬機(jī)上的應(yīng)用程序請(qǐng)求調(diào)用位于網(wǎng)絡(luò)上另一個(gè)JVM上的對(duì)象方法。RMI不希望客戶(hù)應(yīng)用程序直接與遠(yuǎn)程對(duì)象打交道,代替地讓?xiě)?yīng)用程序和遠(yuǎn)程對(duì)象的代理打交道。RMI會(huì)生成一個(gè)存根:一種特殊的字節(jié)碼,并讓這個(gè)存根產(chǎn)生的對(duì)象作為遠(yuǎn)程對(duì)象的代理,即遠(yuǎn)程代理。,94,PPT學(xué)習(xí)交流,虛代理,代理通常擁有與實(shí)際對(duì)象基本相同的接口。代理的工作方式是:把服務(wù)請(qǐng)求明智地轉(zhuǎn)發(fā)給代理控制的底層對(duì)象,最終完成任務(wù)。 對(duì)于大數(shù)
52、據(jù)量的加載,VirtualProxy模式可以讓加載在后臺(tái)進(jìn)行,前臺(tái)用的Prxoy對(duì)象使得整體運(yùn)行速度加快。,95,PPT學(xué)習(xí)交流,虛代理例子,在文檔中嵌入圖形對(duì)象的文檔編輯器,有些圖形對(duì)象的創(chuàng)建開(kāi)銷(xiāo)很大。但是打開(kāi)文檔必須很迅速,因此我們?cè)诖蜷_(kāi)文檔時(shí)避免一次性創(chuàng)建所有開(kāi)銷(xiāo)很大的對(duì)象。意味著應(yīng)該根據(jù)需要進(jìn)行創(chuàng)建,我們使用一個(gè)圖像代理,替代那個(gè)真的圖像,能夠?qū)崿F(xiàn)這個(gè)需求。,96,PPT學(xué)習(xí)交流,保護(hù)代理,控制對(duì)一個(gè)對(duì)象的訪問(wèn)權(quán)限。一般用于不同客戶(hù)對(duì)對(duì)象擁有 不同訪問(wèn)權(quán)限的時(shí)候。 結(jié)構(gòu)上,保護(hù)代理和遠(yuǎn)程代理以及虛代理是極為相似的,只是在請(qǐng)求訪問(wèn)真實(shí)對(duì)象時(shí)提供的功能不同。 區(qū)別:遠(yuǎn)程代理向客戶(hù)隱藏了遠(yuǎn)端
53、機(jī)器或進(jìn)程上的對(duì)象,虛代理負(fù)責(zé)管理了真實(shí)對(duì)象的加載方式。而保護(hù)代理則為用戶(hù)訪問(wèn)對(duì)象的權(quán)限進(jìn)行管理,97,PPT學(xué)習(xí)交流,12、享元模式,王萌(講課) 黃萬(wàn)德(PPT、代碼) 王勛(回答問(wèn)題),1頁(yè),FLYWEIGHT每天跟MM發(fā)短信,手指都累死了,最近買(mǎi)了個(gè)新手機(jī),可以把一些常用的句子存在手機(jī)里,要用的時(shí)候,直接拿出來(lái),在前面加上MM的名字就可以發(fā)送了,再不用一個(gè)字一個(gè)字敲了。共享的句子就是Flyweight,MM的名字就是提取出來(lái)的外部特征,根據(jù)上下文情況使用。享元模式:FLYWEIGHT在拳擊比賽中指最輕量級(jí)。享元模式以共享的方式高效的支持大量的細(xì)粒度對(duì)象。享元模式能做到共享的關(guān)鍵是區(qū)分內(nèi)
54、蘊(yùn)狀態(tài)和外蘊(yùn)狀態(tài)。內(nèi)蘊(yùn)狀態(tài)存儲(chǔ)在享元內(nèi)部,不會(huì)隨環(huán)境的改變而有所不同。外蘊(yùn)狀態(tài)是隨環(huán)境的改變而改變的。外蘊(yùn)狀態(tài)不能影響內(nèi)蘊(yùn)狀態(tài),它們是相互獨(dú)立的。將可以共享的狀態(tài)和不可以共享的狀態(tài)從常規(guī)類(lèi)中區(qū)分開(kāi)來(lái),將不可以共享的狀態(tài)從類(lèi)里剔除出去。客戶(hù)端不可以直接創(chuàng)建被共享的對(duì)象,而應(yīng)當(dāng)使用一個(gè)工廠對(duì)象負(fù)責(zé)創(chuàng)建被共享的對(duì)象。享元模式大幅度的降低內(nèi)存中對(duì)象的數(shù)量。,98,PPT學(xué)習(xí)交流,享元模式,運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象 模式結(jié)構(gòu)中的四種角色 1.享元接口(Flyweight) 2.具體享元(Concrete Flyweight) 3.享元工廠(Flyweight Factory) 4.客戶(hù)端(
55、Client),99,PPT學(xué)習(xí)交流,類(lèi) 圖,100,PPT學(xué)習(xí)交流,享元模式的特點(diǎn),享元模式的意圖是通過(guò)共享有效支持大量細(xì)粒度的對(duì)象,來(lái)提供應(yīng)用程序的性能,節(jié)省系統(tǒng)中重復(fù)創(chuàng)建對(duì)象實(shí)例的性能消耗 這個(gè)怎么理解呢? 1、當(dāng)我們系統(tǒng)中某個(gè)對(duì)象類(lèi)型的實(shí)例較多的情況。 2、并且要求這些實(shí)例進(jìn)行分類(lèi)后,發(fā)現(xiàn)真正有區(qū)別的分類(lèi)很少的情況。,101,PPT學(xué)習(xí)交流,享元模式的使用場(chǎng)景,1、當(dāng)我們發(fā)現(xiàn)某個(gè)類(lèi)型的對(duì)象有大量的實(shí)例時(shí),我們是否可以對(duì)這些實(shí)例進(jìn)行分類(lèi),經(jīng)過(guò)分類(lèi)后,我們發(fā)現(xiàn)只有很少的類(lèi)別的情況下。 2、我們發(fā)現(xiàn)通過(guò)使用享元模式后能夠提高系統(tǒng)的性能和不會(huì)帶來(lái)更多的復(fù)雜度時(shí)。,102,PPT學(xué)習(xí)交流,享元模
56、式的優(yōu)點(diǎn),使用享元可以節(jié)省內(nèi)存的開(kāi)銷(xiāo),特別適合處理大量細(xì)粒度對(duì)象,這些對(duì)象的許多屬性值是相同的,而且一旦創(chuàng)建則不容許修改 享元模式中的享元可以使用方法的參數(shù)接受外部狀態(tài)中的數(shù)據(jù),但外部狀態(tài)數(shù)據(jù)不會(huì)干擾到享元中的內(nèi)部數(shù)據(jù),這就使得享元可以在不同的環(huán)境中被共享,103,PPT學(xué)習(xí)交流,13、Faade(門(mén)面)模式,主講:汪慶鋒 組員:沈仙橋、阮金晶、毛泉涌,2頁(yè),FACADE我有一個(gè)專(zhuān)業(yè)的Nikon相機(jī),我就喜歡自己手動(dòng)調(diào)光圈、快門(mén),這樣照出來(lái)的照片才專(zhuān)業(yè),但MM可不懂這些,教了半天也不會(huì)。幸好相機(jī)有Facade設(shè)計(jì)模式,把相機(jī)調(diào)整到自動(dòng)檔,只要對(duì)準(zhǔn)目標(biāo)按快門(mén)就行了,一切由相機(jī)自動(dòng)調(diào)整,這樣MM也
57、可以用這個(gè)相機(jī)給我拍張照片了。門(mén)面模式:外部與一個(gè)子系統(tǒng)的通信必須通過(guò)一個(gè)統(tǒng)一的門(mén)面對(duì)象進(jìn)行。門(mén)面模式提供一個(gè)高層次的接口,使得子系統(tǒng)更易于使用。每一個(gè)子系統(tǒng)只有一個(gè)門(mén)面類(lèi),而且此門(mén)面類(lèi)只有一個(gè)實(shí)例,也就是說(shuō)它是一個(gè)單例模式。但整個(gè)系統(tǒng)可以有多個(gè)門(mén)面類(lèi)。,104,PPT學(xué)習(xí)交流,4.Facade模式登場(chǎng),定義:將子系統(tǒng)中的各類(lèi)(或結(jié)構(gòu)與方法)整合成一個(gè)簡(jiǎn)明一致的界面,隱藏子系統(tǒng)的復(fù)雜性,使子系統(tǒng)更加容易使用。,105,PPT學(xué)習(xí)交流,4.Facade模式登場(chǎng)(續(xù)),簡(jiǎn)單結(jié)構(gòu)圖,Facade,Client2,Client1,Client3,subsystem,106,PPT學(xué)習(xí)交流,4.Faca
58、de模式登場(chǎng)(續(xù)),模式實(shí)現(xiàn) 定義一個(gè)(或多個(gè))具備所需接口的新類(lèi)(門(mén)面類(lèi)) 新類(lèi)(門(mén)面類(lèi))使用原有的系統(tǒng) 客戶(hù)使用門(mén)面類(lèi)對(duì)象與原系統(tǒng)打交道,107,PPT學(xué)習(xí)交流,6.模式剖析,結(jié)合前面的Facade模式結(jié)構(gòu)圖來(lái)分析周星星看病這個(gè)實(shí)際例子:圖中的subsystem對(duì)應(yīng)了掛號(hào)、劃價(jià)、繳費(fèi)、取藥這些操作集合;Facade對(duì)應(yīng)了接待員Receptionist對(duì)象;然后Client對(duì)應(yīng)了病人周星星。,108,PPT學(xué)習(xí)交流,6.模式剖析(續(xù)),接待員Receptionist對(duì)象將子系統(tǒng)中的多個(gè)接口重新封裝成一個(gè)更高層、更簡(jiǎn)單的接口供Client使用,將子系統(tǒng)的復(fù)雜性隱藏起來(lái),將子系統(tǒng)與Client的
59、聯(lián)系解耦。 用戶(hù)不必關(guān)心子系統(tǒng)的運(yùn)作方式,只需和Facade也即Receptionist對(duì)象打交道,完成自己所需的工序。,109,PPT學(xué)習(xí)交流,7.模式優(yōu)點(diǎn),它對(duì)客戶(hù)屏蔽子系統(tǒng)組件,因而減少了客戶(hù)處理的對(duì)象的數(shù)目并使得子系統(tǒng)使用起來(lái)更加方便。 它實(shí)現(xiàn)了子系統(tǒng)與客戶(hù)之間的松耦合關(guān)系,而子系統(tǒng)內(nèi)部的功能組件往往是緊耦合的。 如果應(yīng)用需要,它并不限制用戶(hù)使用子系統(tǒng)類(lèi),因此你可以在系統(tǒng)易用性和通用性之間加以選擇。,110,PPT學(xué)習(xí)交流,8.模式適用場(chǎng)合,當(dāng)你要為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)單接口時(shí)。 客戶(hù)只需要使用某個(gè)復(fù)雜系統(tǒng)的子集,或者需要以一種特殊的方式與系統(tǒng)交互。 希望封裝或者隱藏原系統(tǒng)時(shí)。,111,PPT學(xué)習(xí)交流,9.迪米特法則,只與你直接的朋友們通信。 迪米特法則要求一個(gè)對(duì)象的相互作用是短程的,朋友的數(shù)目越少越好,其實(shí)質(zhì)是減少耦合度。 Facade模式符合迪米特法則。,112,PPT學(xué)習(xí)交流,10.模式的變體,典型的門(mén)面模式強(qiáng)調(diào)不應(yīng)該引入新的功能。 門(mén)面模式的變體可以適當(dāng)引入新的功能,補(bǔ)充系
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年成都文理學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)附答案
- 2026年泉州華光職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)附答案
- 2026年廣東輕工職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)及答案1套
- 2026年河北石油職業(yè)技術(shù)大學(xué)單招綜合素質(zhì)考試模擬測(cè)試卷附答案
- 2026年廣東金融學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)附答案
- 2026年山西水利職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)附答案
- 2026年四川電子機(jī)械職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)及答案1套
- 2026福建漳州市鼓浪嶼故宮文物館招聘6人筆試備考題庫(kù)及答案解析
- 2026年往屆單招中醫(yī)試題附答案
- 2026年安徽工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試模擬測(cè)試卷附答案
- 2026國(guó)家電投招聘試題及答案
- 2025年山東建筑大學(xué)思想道德修養(yǎng)與法律基礎(chǔ)期末考試模擬題必考題
- 江西省贛州地區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末英語(yǔ)試(含答案)
- 2024年人教版七7年級(jí)下冊(cè)數(shù)學(xué)期末質(zhì)量檢測(cè)題(附答案)
- 2025 AHA 心肺復(fù)蘇與心血管急救指南 - 第6部分:兒童基本生命支持解讀
- 2026年大慶醫(yī)學(xué)高等專(zhuān)科學(xué)校單招職業(yè)技能測(cè)試模擬測(cè)試卷附答案
- 中央財(cái)經(jīng)大學(xué)金融學(xué)院行政崗招聘1人(非事業(yè)編制)參考筆試題庫(kù)及答案解析
- 【8物(HY)期末】六安市舒城縣2024-2025學(xué)年八年級(jí)上學(xué)期期末考試物理試卷
- 澆鑄工安全生產(chǎn)責(zé)任制
- 錢(qián)大媽加盟合同協(xié)議
- 患者身份識(shí)別管理標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論