




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
一、簡單工廠模式的概念與結(jié)
構(gòu)
二、簡單工廠模式規(guī)范描述三、簡單工廠模式設(shè)計中用到
的設(shè)計原則一、簡單工廠模式的概念與結(jié)構(gòu)1、問題的提出某農(nóng)場種植并向市場銷售葡萄、草莓和蘋果這三種水果,現(xiàn)客戶要向該農(nóng)場了解某水果的生長、收獲和種植情況,當(dāng)用戶輸入某水果時即可查詢相應(yīng)該水果具體情況,請設(shè)計并實(shí)現(xiàn)該程序。。2、基本思路用戶/客戶不需要親自去觀測各種水果的生長、收獲和種植情況,他只需要向農(nóng)場主管部門打聽就行了,農(nóng)場主管部門依據(jù)客戶需要的水果種類,發(fā)送水果情況單到農(nóng)場具體水果部門,由具體水果部門填水果情況單,最后信息由農(nóng)場主管部門返回到客戶手中
。一、簡單工廠模式的概念與結(jié)構(gòu)2、基本思路其各類角色如下:一、簡單工廠模式的概念與結(jié)構(gòu)工廠:由客戶端直接調(diào)用,在該類中聲明一個創(chuàng)建對象的接口(主管部門)。抽象產(chǎn)品:具體產(chǎn)品的共同接口,是所要創(chuàng)建的對象(具本產(chǎn)品)的父類(表單屬性)。具體產(chǎn)品:由工廠所創(chuàng)建的對象(已填好的表單)。具體各角色UML關(guān)系圖:3、GarderPlantFruit工廠方法具體實(shí)現(xiàn)由Visualc++6.0編程完成。一、簡單工廠模式的概念與結(jié)構(gòu)4、GarderPlantFruit工廠方法代碼分析
抽象產(chǎn)品抽象接口類(父類)ClassFruit{ Public:
Virtualvoidgrow()=0;
Virtualvoidharvest()=0; Virtualvoidplant()=0;}一、簡單工廠模式的概念與結(jié)構(gòu)具體產(chǎn)品實(shí)現(xiàn)實(shí)體類(子類)
ClassApple:publicFruit{ Apple(){}
Voidgrow() { Printf(“Appleisgrowing……\n”);} Voidharvest() { Printf(“Appleisharvesting……\n”);} Voidplant() { Printf(“Appleisplanting……\n”);} …………}具體產(chǎn)品實(shí)現(xiàn)實(shí)體類(子類)
ClassStrawberry:publicFruit{ Strawberry(){}
Voidgrow() { Printf(“Strawberryisgrowing……\n”);} Voidharvest() { Printf(“Strawberryisharvesting……\n”);} Voidplant() { Printf(“Strawberryisplanting……\n”);} …………}具體產(chǎn)品實(shí)現(xiàn)實(shí)體類(子類)
Classgrape:publicFruit{ grape(){}
Voidgrow() { Printf(“grapeisgrowing……\n”);} Voidharvest() { Printf(“grapeisharvesting……\n”);} Voidplant() { Printf(“grapeisplanting……\n”);} …………}4、GarderPlantFruit工廠方法代碼分析
工廠構(gòu)造類接口
把和數(shù)據(jù)相關(guān)的問題與類的其它方法隔離
一、簡單工廠模式的概念與結(jié)構(gòu)客戶對工廠的使用引用調(diào)用Intmain(int
argc,char*argv[]){ FruitGardener*frgd=newFruitGardener; Fruit*afruit=frga->factory(“Apple”);
aFruit->grow();
aFrui->harvest();
aFrui->plant();}一、簡單工廠模式的概念與結(jié)構(gòu)4、GarderPlantFruit簡單工廠代碼分析
概念
定義一個創(chuàng)建對象的接口,根據(jù)提供給它的數(shù)據(jù),返回幾個可能實(shí)體類中的一個類的實(shí)例,由工廠類根據(jù)傳入的參量決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例,是一個靜態(tài)接口,又叫靜態(tài)工廠方法模式。一、工廠方法模式的概念與結(jié)構(gòu)4、簡單工廠模式的概念與結(jié)構(gòu)基本結(jié)構(gòu)一、簡單工廠模式的概念與結(jié)構(gòu)4、簡單工廠模式的概念與結(jié)構(gòu)Factory+CreateProduct()AbstractProduct+Operation()ConcreteProduct3+Operation()ConcreteProduct3+Operation()ConcreteProduct3+Operation()基本結(jié)構(gòu)Factory類實(shí)現(xiàn)工廠角色 與應(yīng)用程序無關(guān),任何模式中創(chuàng)建的對象的工廠類必須實(shí)現(xiàn)這個接口。ClassFactory{ Public: StaticAbstractProductfactory() {ReturnnewConcreteProduct();}}
一、簡單工廠模式的概念與結(jié)構(gòu)4、簡單工廠模式的概念與結(jié)構(gòu)基本結(jié)構(gòu)AbstractProduct
抽象角色ClassAbstractProduct{ Public:};一、簡單工廠模式的概念與結(jié)構(gòu)4、簡單工廠模式的概念與結(jié)構(gòu)基本結(jié)構(gòu)ConcreteProduct
類實(shí)現(xiàn)抽象產(chǎn)品角色ClassConcreteProduct:AbstractProduct{ Public:
ConcreteProduct() { }}
一、簡單工廠模式的概念與結(jié)構(gòu)4、簡單工廠模式的概念與結(jié)構(gòu)簡略結(jié)構(gòu)
一、簡單工廠模式的概念與結(jié)構(gòu)4、簡單工廠模式的概念與結(jié)構(gòu)系統(tǒng)僅有一個具體產(chǎn)品角色
一、簡單工廠模式的概念與結(jié)構(gòu)4、簡單工廠模式的概念與結(jié)構(gòu)二、簡單工廠模式規(guī)范描述
模式名和分類
:簡單工廠模式二、簡單工廠模式規(guī)范描述
意圖
:定義一個創(chuàng)建對象的接口,根據(jù)所提供的參數(shù)決定創(chuàng)建出哪一個實(shí)體類的一個實(shí)例。簡單工廠模式封裝了對象創(chuàng)建的過程。二、簡單工廠模式規(guī)范描述
別名
:靜態(tài)工廠
二、簡單工廠模式規(guī)范描述
動機(jī)
:為了提高內(nèi)聚和松耦合,我們經(jīng)常會抽象出一些類的公共接口,以形成抽象基類或接口,這樣我們可以通過聲明一個指向基類的指針來指實(shí)實(shí)際的子類實(shí)現(xiàn),達(dá)到了多態(tài)的目的,但這容易出現(xiàn)一個問題:大量的子類繼承抽象基類,我們不得不在每次要用到子類的地方就編寫諸如“new×××;”的代碼,進(jìn)而又帶來兩個問題:二、簡單工廠模式規(guī)范描述
客戶程序員必需知道實(shí)際子類的名稱,但當(dāng)系統(tǒng)復(fù)雜后,命名是一個很不好得理問題,為了處理可能的名字沖突,有的命名可能并不是具有很好的可讀性和可記憶性,就姑且不論不同程序員千奇百怪的個人偏好了。
程序的擴(kuò)展和維護(hù)變得越來越困難
。這就是簡單工廠模式要解決的,通過定義創(chuàng)建對象的接口,封裝對象的創(chuàng)建,與客戶程序員無關(guān),增強(qiáng)程序的擴(kuò)展性的可維護(hù)性。動機(jī)
:二、簡單工廠模式規(guī)范描述
適用性
:依據(jù)參數(shù)自動創(chuàng)建對象,是對象創(chuàng)建的真正工廠。二、簡單工廠模式規(guī)范描述
結(jié)構(gòu):Factory+CreateProduct()AbstractProduct+Operation()ConcreteProduct+Operation()二、簡單工廠模式規(guī)范描述
參與者
:AbstractProduct
定義簡單工廠方法所創(chuàng)建的對象的接口ConcreteProduct
實(shí)現(xiàn)AbstractProduct接口Factory定義簡單工廠方法,返回一個ConcreteProduct實(shí)例二、簡單工廠模式規(guī)范描述
協(xié)作
:Creator依賴于它的子類定義的工廠方法,它返回一個適當(dāng)?shù)腃oncreteProduct實(shí)例
二、簡單工廠模式規(guī)范描述
效果
:工廠方法不再將與特定應(yīng)用有關(guān)的類邦定到代碼中,代碼僅處理Product接口,可以與用戶定義的任何ConcreteProduct類一起使用。
連接平行層次的類,使用一個獨(dú)立的工廠類來創(chuàng)建不同的具體平行實(shí)體類,實(shí)現(xiàn)對不同對象操縱。為子類提供掛鉤(hook),以提供對象的擴(kuò)展版本,在一個類的內(nèi)部創(chuàng)建對象,比直接創(chuàng)建對象更靈活
??蛻艨赡軆H為了創(chuàng)建一個特定ConcreteProduct對象,就不得不創(chuàng)建Creator的子類,進(jìn)而要處理類演化的其他方面。二、簡單工廠模式規(guī)范描述
實(shí)現(xiàn)
:采用一個標(biāo)識要被創(chuàng)建的對象種類的參數(shù)來創(chuàng)建多種產(chǎn)品。ClassCreator{ Public:VirtualProduct*Create(ProductID);}Product*Creator::Create(ProductID){ If(ProductID=MINE)returnnewMyProduct; If(ProductID=YOURS)returnnewYourProduct; Return0;}二、簡單工廠模式規(guī)范描述
示例
:詳見GarderPlantFruit。
二、簡單工廠模式規(guī)范描述
已知應(yīng)用
:主要用于工具包和框架
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新疆烏魯木齊第十三中學(xué)2024-2025學(xué)年初三3月模擬考試數(shù)學(xué)試題含解析
- 新疆烏魯木齊市四中2025屆高三下學(xué)期學(xué)習(xí)能力診斷化學(xué)試題含解析
- 新鄉(xiāng)醫(yī)學(xué)院三全學(xué)院《中學(xué)化學(xué)教學(xué)設(shè)計與技能訓(xùn)練(一)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025至2031年中國禮品燈具行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國粉末冶金摩擦片及結(jié)構(gòu)件行業(yè)投資前景及策略咨詢研究報告
- 贛州市重點(diǎn)中學(xué)2024屆中考聯(lián)考數(shù)學(xué)試題含解析
- 2025年工廠安全培訓(xùn)考試試題答案完美版
- 2025年新入職工入職安全培訓(xùn)考試試題答案高清版
- 2024-2025項(xiàng)目安全培訓(xùn)考試試題【預(yù)熱題】
- 2025年公司三級安全培訓(xùn)考試試題含答案【完整版】
- 2025年人教版小學(xué)數(shù)學(xué)二年級下冊期末考試卷(帶答案解析)
- 西師大版小學(xué)五年級 數(shù)學(xué)(下)期末測試題(含答案)
- 化工工藝原理考試題庫梳理
- 定金款管理制度
- 光伏電站安全培訓(xùn)
- GB/T 37027-2025網(wǎng)絡(luò)安全技術(shù)網(wǎng)絡(luò)攻擊和網(wǎng)絡(luò)攻擊事件判定準(zhǔn)則
- 2025年江蘇南通蘇北七市高三二模高考物理試卷(含答案詳解)
- 2024年藥理學(xué)考試真題回顧試題及答案
- 2024年綿陽市商業(yè)銀行招聘考試真題
- 2025年軍隊(duì)文職(司機(jī)類)核心知識點(diǎn)備考題庫(含答案)
- 2025年深圳二??荚囋囶}及答案
評論
0/150
提交評論