freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c設(shè)計(jì)模式大全(編輯修改稿)

2024-08-24 12:23 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ractclassLight{publicabstractvoidTurnOn()。publicabstractvoidTurnOff()。}publicclassBulbLight:Light{publicoverridevoidTurnOn(){(BulbLightisTurnedon)。}publicoverridevoidTurnOff(){(BulbLightisTurnedoff)。}}publicclassTubeLight:Light{publicoverridevoidTurnOn(){(TubeLightisTurnedon)。}publicoverridevoidTurnOff(){(TubeLightisTurnedoff)。}}publicclassLightSimpleFactory{publicLightCreate(stringLightType){if(LightType==Bulb)returnnewBulbLight()。elseif(LightType==Tube)returnnewTubeLight()。elsereturnnull。}}publicclassClient{publicstaticvoidMain(){LightSimpleFactorylsf=newLightSimpleFactory()。Lightl=(Bulb)。()。()。()。l=(Tube)。()。()。}}四、Simple Factory模式演化Simple Factory模式演化(一)除了上面的用法外,在有些情況下Simple Factory可以由抽象產(chǎn)品角色扮演,一個(gè)抽象產(chǎn)品類(lèi)同時(shí)是子類(lèi)的工廠。程序舉例:usingSystem。publicclassLight{publicvirtualvoidTurnOn(){}publicvirtualvoidTurnOff(){}publicstaticLightCreate(stringLightType){if(LightType==Bulb)returnnewBulbLight()。elseif(LightType==Tube)returnnewTubeLight()。elsereturnnull。}}publicclassBulbLight:Light{publicoverridevoidTurnOn(){(BulbLightisTurnedon)。}publicoverridevoidTurnOff(){(BulbLightisTurnedoff)。}}publicclassTubeLight:Light{publicoverridevoidTurnOn(){(TubeLightisTurnedon)。}publicoverridevoidTurnOff(){(TubeLightisTurnedoff)。}}publicclassClient{publicstaticvoidMain(){Lightl=(Bulb)。()。()。()。l=(Tube)。()。()。}}Simple Factory模式演化(二)三個(gè)角色全部合并:與單件模式(Singleton)相近,但是有區(qū)別。五、優(yōu)點(diǎn)與缺點(diǎn):優(yōu)點(diǎn):工廠類(lèi)含有必要的判斷邏輯,可以決定在什么時(shí)候創(chuàng)建哪一個(gè)產(chǎn)品類(lèi)的實(shí)例,客戶端可以免除直接創(chuàng)建產(chǎn)品對(duì)象的責(zé)任,而僅僅消費(fèi)產(chǎn)品。簡(jiǎn)單工廠模式通過(guò)這種做法實(shí)現(xiàn)了對(duì)責(zé)任的分割。缺點(diǎn):當(dāng)產(chǎn)品有復(fù)雜的多層等級(jí)結(jié)構(gòu)時(shí),工廠類(lèi)只有自己,以不變應(yīng)萬(wàn)變,就是模式的缺點(diǎn)。因?yàn)楣S類(lèi)集中了所有產(chǎn)品創(chuàng)建邏輯,一旦不能正常工作,整個(gè)系統(tǒng)都要受到影響。同時(shí),系統(tǒng)擴(kuò)展困難,一旦添加新產(chǎn)品就不得不修改工廠邏輯,有可能造成工廠邏輯過(guò)于復(fù)雜。另外,簡(jiǎn)單工廠模式通常使用靜態(tài)工廠方法,這使得無(wú)法由子類(lèi)繼承,造成工廠角色無(wú)法形成基于繼承的等級(jí)結(jié)構(gòu)。C設(shè)計(jì)模式(5)-Factory Method Pattern 一、工廠方法(Factory Method)模式工廠方法(FactoryMethod)模式是類(lèi)的創(chuàng)建模式,其用意是定義一個(gè)創(chuàng)建產(chǎn)品對(duì)象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類(lèi)中。工廠方法模式是簡(jiǎn)單工廠模式的進(jìn)一步抽象和推廣。由于使用了多態(tài)性,工廠方法模式保持了簡(jiǎn)單工廠模式的優(yōu)點(diǎn),而且克服了它的缺點(diǎn)。在工廠方法模式中,核心的工廠類(lèi)不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建工作交給子類(lèi)去做。這個(gè)核心類(lèi)僅僅負(fù)責(zé)給出具體工廠必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類(lèi)被實(shí)例化這種細(xì)節(jié)。這使得工廠方法模式可以允許系統(tǒng)在不修改工廠角色的情況下引進(jìn)新產(chǎn)品。在Factory Method模式中,工廠類(lèi)與產(chǎn)品類(lèi)往往具有平行的等級(jí)結(jié)構(gòu),它們之間一一對(duì)應(yīng)。二、Factory Method模式角色與結(jié)構(gòu):抽象工廠(Creator)角色:是工廠方法模式的核心,與應(yīng)用程序無(wú)關(guān)。任何在模式中創(chuàng)建的對(duì)象的工廠類(lèi)必須實(shí)現(xiàn)這個(gè)接口。具體工廠(Concrete Creator)角色:這是實(shí)現(xiàn)抽象工廠接口的具體工廠類(lèi),包含與應(yīng)用程序密切相關(guān)的邏輯,并且受到應(yīng)用程序調(diào)用以創(chuàng)建產(chǎn)品對(duì)象。在上圖中有兩個(gè)這樣的角色:BulbCreator與TubeCreator。抽象產(chǎn)品(Product)角色:工廠方法模式所創(chuàng)建的對(duì)象的超類(lèi)型,也就是產(chǎn)品對(duì)象的共同父類(lèi)或共同擁有的接口。在上圖中,這個(gè)角色是Light。具體產(chǎn)品(Concrete Product)角色:這個(gè)角色實(shí)現(xiàn)了抽象產(chǎn)品角色所定義的接口。某具體產(chǎn)品有專(zhuān)門(mén)的具體工廠創(chuàng)建,它們之間往往一一對(duì)應(yīng)。三、程序舉例:usingSystem。publicabstractclassLight{publicabstractvoidTurnOn()。publicabstractvoidTurnOff()。}publicclassBulbLight:Light{publicoverridevoidTurnOn(){(BulbLightisTurnedon)。}publicoverridevoidTurnOff(){(BulbLightisTurnedoff)。}}publicclassTubeLight:Light{publicoverridevoidTurnOn(){(TubeLightisTurnedon)。}publicoverridevoidTurnOff(){(TubeLightisTurnedoff)。}}publicabstractclassCreator{publicabstractLightfactory()。}publicclassBulbCreator:Creator{publicoverrideLightfactory(){returnnewBulbLight()。}}publicclassTubeCreator:Creator{publicoverrideLightfactory(){returnnewTubeLight()。}}publicclassClient{publicstaticvoidMain(){Creatorc1=newBulbCreator()。Creatorc2=newTubeCreator()。Lightl1=()。Lightl2=()。()。()。()。()。()。}}工廠方法的活動(dòng)序列圖活動(dòng)過(guò)程包括:客戶端創(chuàng)建BulbCreator對(duì)象,客戶端持有此對(duì)象的類(lèi)型是Creator,而實(shí)際類(lèi)型是BulbCreator。然后客戶端調(diào)用BulbCreator的factory方法,之后BulbCreator調(diào)用BulbLight的構(gòu)造函數(shù)創(chuàng)造出產(chǎn)品BulbLight對(duì)象。四、工廠方法模式與簡(jiǎn)單工廠模式工廠方法模式與簡(jiǎn)單工廠模式再結(jié)構(gòu)上的不同不是很明顯。工廠方法類(lèi)的核心是一個(gè)抽象工廠類(lèi),而簡(jiǎn)單工廠模式把核心放在一個(gè)具體類(lèi)上。工廠方法模式之所以有一個(gè)別名叫多態(tài)性工廠模式是因?yàn)榫唧w工廠類(lèi)都有共同的接口,或者有共同的抽象父類(lèi)。當(dāng)系統(tǒng)擴(kuò)展需要添加新的產(chǎn)品對(duì)象時(shí),僅僅需要添加一個(gè)具體對(duì)象以及一個(gè)具體工廠對(duì)象,原有工廠對(duì)象不需要進(jìn)行任何修改,也不需要修改客戶端,很好的符合了開(kāi)放-封閉原則。而簡(jiǎn)單工廠模式在添加新產(chǎn)品對(duì)象后不得不修改工廠方法,擴(kuò)展性不好。工廠方法模式退化后可以演變成簡(jiǎn)單工廠模式。五、Factory Method模式演化使用接口或抽象類(lèi)抽象工廠角色和抽象場(chǎng)頻角色都可以選擇由接口或抽象類(lèi)實(shí)現(xiàn)。使用多個(gè)工廠方法抽象工廠角色可以規(guī)定出多于一個(gè)的工廠方法,從而使具體工廠角色實(shí)現(xiàn)這些不同的工廠方法,這些方法可以提供不同的商業(yè)邏輯,以滿足提供不同的產(chǎn)品對(duì)象的任務(wù)。產(chǎn)品的循環(huán)使用工廠方法總是調(diào)用產(chǎn)品類(lèi)的構(gòu)造函數(shù)以創(chuàng)建一個(gè)新的產(chǎn)品實(shí)例,然后將這個(gè)實(shí)例提供給客戶端。而在實(shí)際情形中,工廠方法所做的事情可以相當(dāng)復(fù)雜。一個(gè)常見(jiàn)的復(fù)雜邏輯就是循環(huán)使用產(chǎn)品對(duì)象。工廠對(duì)象將已經(jīng)創(chuàng)建過(guò)的產(chǎn)品登記到一個(gè)聚集中,然后根據(jù)客戶所請(qǐng)求的產(chǎn)品狀態(tài),向聚集查詢(xún)。如果有滿足要求的產(chǎn)品對(duì)象,就直接將產(chǎn)品返回客戶端;如果聚集中沒(méi)有這樣的產(chǎn)品對(duì)象,那么就創(chuàng)建一個(gè)新的滿足要求的產(chǎn)品對(duì)象,然后將這個(gè)對(duì)象登記到聚集中,再返還給客戶端。享元模式(Flyweight Pattern)就是這樣一個(gè)模式。多態(tài)性的喪失和模式的退化一個(gè)工廠方法模式的實(shí)現(xiàn)依賴(lài)于工廠角色和產(chǎn)品角色的多態(tài)性。在有些情況下,這個(gè)模式可以出現(xiàn)退化。工廠方法返回的類(lèi)型應(yīng)當(dāng)是抽象類(lèi)型,而不是具體類(lèi)型。調(diào)用工廠方法的客戶端應(yīng)當(dāng)依賴(lài)抽象產(chǎn)品編程,而不是具體產(chǎn)品。如果工廠僅僅返回一個(gè)具體產(chǎn)品對(duì)象,便違背了工廠方法的用意,發(fā)生退化,這時(shí)就不再是工廠模式了。工廠的等級(jí)結(jié)構(gòu):工廠對(duì)象應(yīng)當(dāng)有一個(gè)抽象的超類(lèi)型。如果等級(jí)結(jié)構(gòu)中只有一個(gè)具體工廠類(lèi)的話,抽象工廠就可以省略,發(fā)生了退化。六、Factory Method模式與其它模式的關(guān)系與工廠方法模式有關(guān)的模式還包括:模板方法模式、MVC模式、享元模式、備忘錄模式七、另外一個(gè)例子//FactoryMethodpatternRealWorldexampleusingSystem。using//ProductabstractclassPage{}//ConcreteProductclassSkillsPage:Page{}//ConcreteProductclassEducationPage:Page{}//ConcreteProductclassExperiencePage:Page
點(diǎn)擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1