版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、書名:軟件設(shè)計(jì)原則與模式ISBN: 978-7-111-51002-4作者:郭雙宙出版社:機(jī)械工業(yè)出版社本書配有電子課件創(chuàng)建模式(CreativnalPattem)是對(duì)類的實(shí)例化過(guò)程的抽象化。一些系統(tǒng)在創(chuàng)建對(duì)象時(shí),需要?jiǎng)討B(tài)地決定怎樣創(chuàng)建對(duì)象,創(chuàng)建哪些對(duì)象,以及如何組合和表示這些對(duì)象。創(chuàng)建模式描述了怎樣構(gòu)造和封裝這些動(dòng)態(tài)的決定。創(chuàng)建模式分為類的創(chuàng)建模式和對(duì)象的創(chuàng)建模式兩種。類的創(chuàng)建模式:類的創(chuàng)建模式使用繼承關(guān)系,把類的創(chuàng)建延遲到子類,從而封裝了客戶端將得到哪些具體類的信息,并且隱藏了這些類的實(shí)例是如何被創(chuàng)建和放在一起的。對(duì)象的創(chuàng)建模式:對(duì)象的創(chuàng)建模式則是把對(duì)象的創(chuàng)建過(guò)程動(dòng)態(tài)地委派給另一個(gè)對(duì)象,從
2、而動(dòng)態(tài)地決定客戶端將得到哪些具體類的實(shí)例,以及這些類的實(shí)例是如何被創(chuàng)建和組合在一起的。本章將要介紹的創(chuàng)建模式包括以下幾種:簡(jiǎn)單工廠模式、工廠方法模式、抽象工廠模式、單例模式、多例模式、建造模式、原始模型模式等。簡(jiǎn)單工廠模式是類的創(chuàng)建模式,又叫做靜態(tài)工廠方法(Static Factory Method)模式。簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。簡(jiǎn)單工廠模式將客戶類和工廠類分開。消費(fèi)者任何時(shí)候需要某種產(chǎn)品,只需向工廠請(qǐng)求即可。消費(fèi)者無(wú)須修改就可以接納新產(chǎn)品。缺點(diǎn)是當(dāng)產(chǎn)品修改時(shí),工廠類也要做相應(yīng)的修改。如:如何創(chuàng)建及如何向客戶端提供。工廠模式專門負(fù)責(zé)將大量有共同接口的類實(shí)例化。
3、工廠模式可以動(dòng)態(tài)決定將哪一個(gè)類實(shí)例化,不必事先知道每次要實(shí)例化哪一個(gè)類。工廠模式有以下幾種形態(tài):簡(jiǎn)單工廠(Simple Factory)模式:又稱靜態(tài)工廠方法模式(Static Factory Method Pattern)。工廠方法(Factory Method)模式:又稱多態(tài)性工廠(Polymorphic Factory)模式或虛擬構(gòu)造子VirtualConstructor)模式。抽象工廠AbstractFactory)模式:又稱工具箱(Kit或Toolkit)模式。簡(jiǎn)單工廠模式是根據(jù)傳入的參數(shù)來(lái)決定到底應(yīng)該創(chuàng)建那個(gè)類的事例出來(lái)。下圖是簡(jiǎn)單工廠模式的一般結(jié)構(gòu)。由圖可以看出,簡(jiǎn)單工廠模式由工
4、廠角色、抽象產(chǎn)品角色、產(chǎn)品角色這三部分組成。1.3.1 簡(jiǎn)單工廠模式的優(yōu)點(diǎn)模式的核心是工廠類。這個(gè)類含有必要的邏輯判斷,可以決定在什么時(shí)候創(chuàng)建哪一個(gè)登錄驗(yàn)證類的實(shí)例,而調(diào)用者則可以免除直接創(chuàng)建對(duì)象的責(zé)任。簡(jiǎn)單工廠模式通過(guò)這種做法實(shí)現(xiàn)了對(duì)責(zé)任的分割,當(dāng)系統(tǒng)引入新的登錄方式的時(shí)候無(wú)需修改調(diào)用者。1.3.2 1.3.2 簡(jiǎn)單簡(jiǎn)單工廠模式的缺點(diǎn)工廠模式的缺點(diǎn)這個(gè)工廠類集中了所有的創(chuàng)建邏輯,當(dāng)有復(fù)雜的多層次等級(jí)結(jié)構(gòu)時(shí),所有的業(yè)務(wù)邏輯都在這個(gè)工廠類中實(shí)現(xiàn)。什么時(shí)候它不能工作了,整個(gè)系統(tǒng)都會(huì)受到影響。工廠方法模式:核心工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建的工作交給子類去做,成為一個(gè)抽象工廠角色,僅負(fù)
5、責(zé)給出具體工廠類必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類應(yīng)當(dāng)被實(shí)例化這種細(xì)節(jié)。與簡(jiǎn)單工廠模式的區(qū)別:在工廠方法模式中,核心的工廠類不再負(fù)責(zé)所有具體產(chǎn)品實(shí)例的創(chuàng)建,而僅僅是需要負(fù)責(zé)給出具體工廠子類必須實(shí)現(xiàn)的接口,讓工廠子類去負(fù)責(zé)具體產(chǎn)品實(shí)例的創(chuàng)建。工廠方法模式的結(jié)構(gòu)如圖所示。從圖可以看出,這個(gè)使用了工廠方法模式的系統(tǒng)涉及到以下的角色:抽象工廠(Creator)角色:擔(dān)任這個(gè)角色的是工廠方法模式的核心,它是與應(yīng)用程序無(wú)關(guān)的。任何在模式中創(chuàng)建對(duì)象的工廠類必須實(shí)現(xiàn)這個(gè)接口。在圖2-2-2中,這個(gè)角色由接口Creator扮演;在實(shí)際的系統(tǒng)中,這個(gè)角色也經(jīng)常用抽象類來(lái)實(shí)現(xiàn)。具體工廠(ConcreteCreat
6、or)角色:擔(dān)任這個(gè)角色的是實(shí)現(xiàn)了抽象工廠接口的具體Java類。具體工廠角色含有與應(yīng)用密切相關(guān)的邏輯,并且受到應(yīng)用程序的調(diào)用以創(chuàng)建產(chǎn)品對(duì)象。在圖2-2-2中給出了兩個(gè)這樣的角色,也就是具體Java類Concretecreatorl和ConcreteCreatcr2。抽象產(chǎn)品(Product)角色:工廠方法模式所創(chuàng)建對(duì)象即產(chǎn)品對(duì)象的共同父類或共同擁有的接口。在圖2-2-2中,這個(gè)角色為接口Product。具體產(chǎn)品(Concrete Product)角色:這個(gè)角色實(shí)現(xiàn)了抽象產(chǎn)品角色所聲明的接口。工廠方法模式所創(chuàng)建的每一個(gè)對(duì)象都是某個(gè)具體產(chǎn)品角色的實(shí)例。在圖2-2-2中,這個(gè)角色由具體類Concre
7、teProductl和ConcreteProduct2扮演,它們都實(shí)現(xiàn)了Product接口。抽象工廠模式可以向客戶端提供一個(gè)接口,使得客戶端在不必指定產(chǎn)品具體類型的情況下,創(chuàng)建多個(gè)產(chǎn)品族中的產(chǎn)品對(duì)象。這就是抽象工廠模式的用意。每個(gè)模式都是針對(duì)一定問(wèn)題的解決方案。抽象工廠模式面對(duì)的問(wèn)題是多產(chǎn)品等級(jí)結(jié)構(gòu)的系統(tǒng)設(shè)計(jì)。抽象工廠模式定義:抽象工廠模式定義:為創(chuàng)建一組相關(guān)或相互依賴的對(duì)象提供一個(gè)接口,而且無(wú)需指定他們的具體類。在學(xué)習(xí)抽象工廠具體實(shí)例之前,應(yīng)先明白兩個(gè)重要的概念:產(chǎn)品族產(chǎn)品族和產(chǎn)品等級(jí)結(jié)構(gòu)產(chǎn)品等級(jí)結(jié)構(gòu)。產(chǎn)品族:是指位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中功能相關(guān)聯(lián)的產(chǎn)品組成的家族。抽象工廠模式所提供的一系列產(chǎn)
8、品就組成一個(gè)產(chǎn)品族。如windows和Linux操作系統(tǒng)就是兩個(gè)不同的產(chǎn)品族。產(chǎn)品等級(jí)結(jié)構(gòu):工廠方法提供的一系列產(chǎn)品稱為一個(gè)等級(jí)結(jié)構(gòu)。windows和Linux操作系統(tǒng)中的“按鈕”、“文本框”等分別為一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu)。一般情況下,產(chǎn)品族和產(chǎn)品等級(jí)結(jié)構(gòu)的關(guān)系如圖所示。如果工廠的產(chǎn)品全部屬于同一個(gè)等級(jí)結(jié)構(gòu),則屬于工廠方法模式;如果工廠的產(chǎn)品來(lái)自多個(gè)等級(jí)結(jié)構(gòu),則屬于抽象工廠模式。采用抽象工廠模式設(shè)計(jì)出的系統(tǒng)結(jié)構(gòu)圖如所示。從圖可以看出,抽象工廠模式涉及到以下的角色。抽象工廠(AbstractFactory)角色:擔(dān)任這個(gè)角色的是工廠方法模式的核心,它與應(yīng)用系統(tǒng)的商業(yè)邏輯無(wú)關(guān)。通常使用Java接口或者抽
9、象Java類實(shí)現(xiàn),而所有的具體工廠類必須實(shí)現(xiàn)這個(gè)Java接口或繼承這個(gè)抽象Java類。 圖2-3-4 抽象工廠模式系統(tǒng)結(jié)構(gòu)圖具體工廠類(ConcreteFactory)角色:這個(gè)角色直接在客戶端的調(diào)用下創(chuàng)建產(chǎn)品的實(shí)例。這個(gè)角色含有選擇合適的產(chǎn)品對(duì)象的邏輯,而這個(gè)邏輯是與應(yīng)用系統(tǒng)的商業(yè)邏輯緊密相關(guān)的。通常使用具體Java類實(shí)現(xiàn)這個(gè)角色。抽象產(chǎn)品(AbstractProduct)角色:擔(dān)任這個(gè)角色的類是工廠方法模式所創(chuàng)建的對(duì)象的父類,或它們共同擁有的接口。通常使用Java接口或者抽象Java類實(shí)現(xiàn)這一角色。具體產(chǎn)品(ConcreteProduct)角色:抽象工廠模式所創(chuàng)建的任何產(chǎn)品對(duì)象都是某一個(gè)具
10、體產(chǎn)品類的實(shí)例。這是客戶端最終需要的東西,其內(nèi)部一定充滿了應(yīng)用系統(tǒng)的商業(yè)邏輯。通常使用具體Java類實(shí)現(xiàn)這個(gè)角色。抽象工廠模式的起源于用于創(chuàng)建分屬于不同操作系統(tǒng)的視窗構(gòu)建。比如:命令按鍵(Button)與文字框(Text)都是視窗構(gòu)建,在UNIX操作系統(tǒng)的視窗環(huán)境和Windows操作系統(tǒng)的視窗環(huán)境中,這兩個(gè)構(gòu)建有不同的本地實(shí)現(xiàn),它們的細(xì)節(jié)有所不同。3.3.1抽象工廠模式的優(yōu)點(diǎn)分離接口和實(shí)現(xiàn)客戶端使用抽象工廠來(lái)創(chuàng)建需要的對(duì)象,而客戶端根本就不知道具體的實(shí)現(xiàn)是誰(shuí),客戶端只是面向產(chǎn)品的接口編程而已。也就是說(shuō),客戶端從具體的產(chǎn)品實(shí)現(xiàn)中解耦。使切換產(chǎn)品族變得容易因?yàn)橐粋€(gè)具體的工廠實(shí)現(xiàn)代表的是一個(gè)產(chǎn)品族,
11、比如上面例子的從Intel系列到AMD系列只需要切換一下具體工廠。3.3.2抽象工廠模式的缺點(diǎn)不太容易擴(kuò)展新的產(chǎn)品如果需要給整個(gè)產(chǎn)品族添加一個(gè)新的產(chǎn)品,那么就需要修改抽象工廠,這樣就會(huì)導(dǎo)致修改所有的工廠實(shí)現(xiàn)類。單例模式:單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例單例模式。單例模式只應(yīng)在有真正的“單一實(shí)例”的需求時(shí)才可使用。Windows操作系統(tǒng)都有一個(gè)回收站,回收站自行提供自己的實(shí)例,在整個(gè)系統(tǒng)中該回收站只能有一個(gè)實(shí)例,整個(gè)系統(tǒng)都使用這個(gè)惟一的實(shí)例。因此回收站是單例模式的應(yīng)用。還有打印機(jī)管理程序也是單例模式的應(yīng)用。 單例模式的特點(diǎn):?jiǎn)卫愔荒苡幸粋€(gè)實(shí)例。單例類必須
12、自己創(chuàng)建自己的唯一實(shí)例。單例類必須給所有其他對(duì)象提供這一實(shí)例。 單例模式的簡(jiǎn)略設(shè)計(jì)圖如圖所示。單例模式分為三種類型:餓漢式、懶漢式和登記式。下面分別討論。4.2.1餓漢式單例模式餓漢式指全局的單例實(shí)例在類裝載時(shí)構(gòu)建并初始化。優(yōu)點(diǎn)是速度快,不調(diào)用時(shí)也創(chuàng)建,餓漢式單例類被加載時(shí),靜態(tài)變量instance會(huì)被初始化,此時(shí)類的私有構(gòu)造函數(shù)會(huì)被調(diào)用。餓漢式其實(shí)是一種比較形象的稱謂。既然餓,那么在創(chuàng)建對(duì)象實(shí)例的時(shí)候時(shí)候就比較著急,餓了嘛,于是在裝載類的時(shí)候就創(chuàng)建對(duì)象實(shí)例。餓漢式是典型的空間換時(shí)間餓漢式是典型的空間換時(shí)間,當(dāng)類裝載的時(shí)候就會(huì)創(chuàng)建類的實(shí)例,不管你用不用,先創(chuàng)建出來(lái),然后每次調(diào)用的時(shí)候,就不需要
13、再判斷,節(jié)省了運(yùn)行時(shí)間。1懶漢式單例介紹懶漢式:指全局的單例實(shí)例在第一次被使用時(shí)構(gòu)建。延遲初始化。速度慢,調(diào)用時(shí)才創(chuàng)建。懶漢式其實(shí)是一種比較形象的稱謂。既然懶,那么在創(chuàng)建對(duì)象實(shí)例的時(shí)候就不著急。會(huì)一直等到馬上要使用對(duì)象實(shí)例的時(shí)候才會(huì)創(chuàng)建,懶人嘛,總是推脫不開的時(shí)候才會(huì)真正去執(zhí)行工作,因此在裝載對(duì)象的時(shí)候不創(chuàng)建對(duì)象實(shí)例。private static LazySingleton instance = null;懶漢式是典型的時(shí)間換空間。就是每次獲取實(shí)例都會(huì)進(jìn)行判斷,看是否需要?jiǎng)?chuàng)建實(shí)例,浪費(fèi)判斷的時(shí)間。當(dāng)然,如果一直沒(méi)有人使用的話,那就不會(huì)創(chuàng)建實(shí)例,則節(jié)約內(nèi)存空間,多例模式與單例模式一般性結(jié)構(gòu)對(duì)比示
14、意圖:多例模式有如下特點(diǎn):多例類可以有多個(gè)實(shí)例多例類必須自己創(chuàng)建自己的實(shí)例,并管理自己的實(shí)例,和向外界提供自己的實(shí)例多例類分為有上限多例類與無(wú)上限多例類。一個(gè)有上限的多例類已經(jīng)把實(shí)例的上限當(dāng)作邏輯的一部分,并建造到了多例類的內(nèi)部。多例類的實(shí)例數(shù)目不需要有上限,實(shí)例數(shù)目沒(méi)有上限的多例模式就叫做無(wú)上限多例模式。由于沒(méi)有上限的多例類對(duì)實(shí)例的數(shù)目是沒(méi)有限制的,因此,雖然這種多例模式是單例模式的推廣,但是這種多例類并不一定能夠回到單例類。一般采用聚集管理所有的實(shí)例。建造模式是對(duì)象的創(chuàng)建模式。建造模式可以將一個(gè)產(chǎn)品的內(nèi)部表象與產(chǎn)品的生產(chǎn)過(guò)程分割開來(lái),從而可以使一個(gè)建造過(guò)程生成具有不同的內(nèi)部表象的產(chǎn)品對(duì)象。
15、6.1 建造模式的適用場(chǎng)景有些情況下,一個(gè)對(duì)象會(huì)有一些重要的性質(zhì),在它們沒(méi)有恰當(dāng)?shù)闹抵埃瑢?duì)象不能作為一個(gè)完整的產(chǎn)品使用。比如,一個(gè)電子郵件有發(fā)件人地址、收件人地址、主題、內(nèi)容、附錄等部分,而在最起碼的收件人地址得到賦值之前,這個(gè)電子郵件不能發(fā)送。需要生成的產(chǎn)品對(duì)象有復(fù)雜的內(nèi)部結(jié)構(gòu),每一個(gè)內(nèi)部成分本身可以是對(duì)象,也可以僅僅是一個(gè)對(duì)象(即產(chǎn)品對(duì)象)的一個(gè)組成部分。需要生成的產(chǎn)品對(duì)象的屬性相互依賴。建造模式可以強(qiáng)制實(shí)行一種分步驟進(jìn)行的建造過(guò)程,因此,如果產(chǎn)品對(duì)象的一個(gè)屬性必須在另一個(gè)屬性被賦值之后才可以被賦值,使用建造模式是一個(gè)很好的設(shè)計(jì)思想。在對(duì)象創(chuàng)建過(guò)程中會(huì)使用到系統(tǒng)中的其他一些對(duì)象,這些對(duì)象
16、在產(chǎn)品對(duì)象的創(chuàng)建過(guò)程中不易得到。使用建造模式可以使客戶端不需要知道所生成的產(chǎn)品有哪些零件,每個(gè)產(chǎn)品的對(duì)應(yīng)零件彼此有何不同,是怎么建造出來(lái)的,以及怎么組成產(chǎn)品。建造模式利用一個(gè)導(dǎo)演者對(duì)象和具體建造者對(duì)象一個(gè)個(gè)地建造出所有的零件,從而建造出完整的產(chǎn)品對(duì)象。建造者模式將產(chǎn)品結(jié)構(gòu)和產(chǎn)品零件的建造過(guò)程對(duì)客戶端隱藏起來(lái),把對(duì)建造過(guò)程進(jìn)行指揮的責(zé)任和具體建造者零件的責(zé)任分割開來(lái),達(dá)到責(zé)任劃分和封裝的目的。建造模式分成兩個(gè)很重要的部分:1)一個(gè)部分是Builder接口,這里是定義了如何構(gòu)建各個(gè)部件,也就是知道每個(gè)部件功能如何實(shí)現(xiàn),以及如何裝配這些部件到產(chǎn)品中去;2)另外一個(gè)部分是Director,Direct
17、or是知道如何組合來(lái)構(gòu)建產(chǎn)品,也就是說(shuō)Director負(fù)責(zé)整體的構(gòu)建算法,而且通常是分步驟地來(lái)執(zhí)行。 不管如何變化,建造模式都存在這么兩個(gè)部分,一個(gè)部分是部件構(gòu)造和產(chǎn)品裝配,另一個(gè)部分是整體構(gòu)建的算法。認(rèn)識(shí)這點(diǎn)是很重要的,因?yàn)樵诮ㄔ炷J街?,?qiáng)調(diào)的是固定整體構(gòu)建的算法,而靈活擴(kuò)展和切換部件的具體構(gòu)造和產(chǎn)品裝配的方式。在這個(gè)示意性的系統(tǒng)里,最終產(chǎn)品Product只有兩個(gè)零件,即part1和part2。相應(yīng)的建造方法也有兩個(gè):buildPart1()和buildPart2()同時(shí)可以看出本模式涉及到四個(gè)角色,它們分別是:抽象建造者(Builder)角色:給出一個(gè)抽象接口,以規(guī)范產(chǎn)品對(duì)象的各個(gè)組成成分
18、的建造。一般而言,此接口獨(dú)立于應(yīng)用程序的商業(yè)邏輯。模式中直接創(chuàng)建產(chǎn)品對(duì)象的是具體建造者(ConcreteBuilder)角色。具體建造者類必須實(shí)現(xiàn)這個(gè)接口所要求的兩種方法:一種是建造方法(buildPart1和buildPart2),另一種是返還結(jié)構(gòu)方法(retrieveResult)。一般來(lái)說(shuō),產(chǎn)品所包含的零件數(shù)目與建造方法的數(shù)目相符。換言之,有多少零件,就有多少相應(yīng)的建造方法。具體建造者(ConcreteBuilder)角色:擔(dān)任這個(gè)角色的是與應(yīng)用程序緊密相關(guān)的一些類,它們?cè)趹?yīng)用程序調(diào)用下創(chuàng)建產(chǎn)品的實(shí)例。這個(gè)角色要完成的任務(wù)包括:1)實(shí)現(xiàn)抽象建造者Builder所聲明的接口,給出一步一步地
19、完成創(chuàng)建產(chǎn)品實(shí)例的操作。2)在建造過(guò)程完成后,提供產(chǎn)品的實(shí)例。導(dǎo)演者(Director)角色:擔(dān)任這個(gè)角色的類調(diào)用具體建造者角色以創(chuàng)建產(chǎn)品對(duì)象。應(yīng)當(dāng)指出的是,導(dǎo)演者角色并沒(méi)有產(chǎn)品類的具體知識(shí),真正擁有產(chǎn)品類的具體知識(shí)的是具體建造者角色。產(chǎn)品(Product)角色:產(chǎn)品便是建造中的復(fù)雜對(duì)象。一般來(lái)說(shuō),一個(gè)系統(tǒng)中會(huì)有多于一個(gè)的產(chǎn)品類,而且這些產(chǎn)品類并不一定有共同的接口,而完全可以是不相關(guān)聯(lián)的。導(dǎo)演者角色是與客戶端打交道的角色。導(dǎo)演者將客戶端創(chuàng)建產(chǎn)品的請(qǐng)求劃分為對(duì)各個(gè)零件的建造請(qǐng)求,再將這些請(qǐng)求委派給具體建造者角色。具體建造者角色是做具體建造工作的,但是卻不為客戶端所知。一般來(lái)說(shuō),每有一個(gè)產(chǎn)品類,就
20、有一個(gè)相應(yīng)的具體建造者類。這些產(chǎn)品應(yīng)當(dāng)有同樣數(shù)目的零件,而每有一個(gè)零件就相應(yīng)地在所有的建造者角色里有一個(gè)建造方法。原型模式屬于對(duì)象的創(chuàng)建模式。通過(guò)給出一個(gè)原型對(duì)象來(lái)指明所有創(chuàng)建的對(duì)象的類型,然后用復(fù)制這個(gè)原型對(duì)象的辦法創(chuàng)建出更多同類型的對(duì)象。這就是選型模式的用意。原型模式要求對(duì)象實(shí)現(xiàn)一個(gè)可以“克隆”自身的接口,這樣就可以通過(guò)復(fù)制一個(gè)實(shí)例對(duì)象本身來(lái)創(chuàng)建一個(gè)新的實(shí)例。這樣一來(lái),通過(guò)原型實(shí)例創(chuàng)建新的對(duì)象,就不再需要關(guān)心這個(gè)實(shí)例本身的類型,只要實(shí)現(xiàn)了克隆自身的方法,就可以通過(guò)這個(gè)方法來(lái)獲取新的對(duì)象,而無(wú)須再去通過(guò)new來(lái)創(chuàng)建。原型模式有兩種表現(xiàn)形式:原型模式有兩種表現(xiàn)形式:(1)簡(jiǎn)單形式(2)登記形式這兩種表現(xiàn)形式僅僅是原型模式的不同實(shí)現(xiàn)。簡(jiǎn)單形式的原型模式結(jié)構(gòu)圖如圖所示。簡(jiǎn)單形式的原型模式涉及到三個(gè)角色:(1)客戶客戶(Client)(Client)角色:角色:客戶類提出創(chuàng)建對(duì)象的請(qǐng)求。(2)抽象原型抽象原型(Prototype)(Prototype)角色:角色:這是一個(gè)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 循證護(hù)理與護(hù)理教育
- 晨間護(hù)理鋪床注意事項(xiàng)
- 中藥封包護(hù)理的科研設(shè)計(jì)與實(shí)施
- 社區(qū)護(hù)理在健康促進(jìn)中的作用
- 告別惡作劇課件
- 吸脂培訓(xùn)教學(xué)課件
- 吸煙的危害課件
- 現(xiàn)代護(hù)理模式與臨床實(shí)踐
- 護(hù)理評(píng)估中的案例研究
- 聽瀑課件教學(xué)課件
- 合規(guī)大講堂培訓(xùn)課件
- 肉毒素的護(hù)理課件
- 模板工程技術(shù)培訓(xùn)課件
- 健康體檢注意事項(xiàng)
- DB42T 1941.1-2022 湖北省市縣級(jí)國(guó)土空間總體規(guī)劃數(shù)據(jù)庫(kù)技術(shù)規(guī)范 第1部分:匯交要求
- 種植項(xiàng)目預(yù)算方案(3篇)
- 會(huì)場(chǎng)各項(xiàng)設(shè)備管理制度
- ehs責(zé)任管理制度
- 美團(tuán)外賣騎手合同范本
- 綠化黃土采購(gòu)合同協(xié)議
- 醫(yī)保中心對(duì)定點(diǎn)二級(jí)醫(yī)院建立住院信息月報(bào)制度
評(píng)論
0/150
提交評(píng)論