簡(jiǎn)單工廠模式.ppt

簡(jiǎn)單工廠模式.ppt

ID:56435123

大小:44.00 KB

頁(yè)數(shù):17頁(yè)

時(shí)間:2020-06-18

簡(jiǎn)單工廠模式.ppt_第1頁(yè)
簡(jiǎn)單工廠模式.ppt_第2頁(yè)
簡(jiǎn)單工廠模式.ppt_第3頁(yè)
簡(jiǎn)單工廠模式.ppt_第4頁(yè)
簡(jiǎn)單工廠模式.ppt_第5頁(yè)
資源描述:

《簡(jiǎn)單工廠模式.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、Java創(chuàng)建對(duì)象的方法所有面向?qū)ο蟮恼Z(yǔ)言都有固定的創(chuàng)立對(duì)象的辦法。java的辦法就是使用new操作符。比如StringBuffers=newStringBuffer(1000);使用new操作符的短處是事先必須明確知道要實(shí)例化的類是什么實(shí)例化的責(zé)任往往與使用實(shí)例的責(zé)任不加區(qū)分。創(chuàng)立性模式面向?qū)ο蟮脑O(shè)計(jì)的目的之一,就是把責(zé)任進(jìn)行劃分,以分派給不同的對(duì)象。創(chuàng)立性模式把對(duì)象的創(chuàng)立過(guò)程封裝起來(lái),使得創(chuàng)立實(shí)例的責(zé)任與使用實(shí)例的責(zé)任分割開由專門的模塊分管實(shí)例的創(chuàng)立,而系統(tǒng)在宏觀上不再依賴于對(duì)象創(chuàng)立過(guò)程的細(xì)節(jié)創(chuàng)立性模式創(chuàng)立性模式將類實(shí)例化,不必事先知道每次是要實(shí)例化哪一個(gè)類把實(shí)例化的責(zé)任

2、與使用實(shí)例的責(zé)任分割開來(lái)工廠模式工廠模式就是專門負(fù)責(zé)將大量有共同接口的類實(shí)例化,而且不必事先知道每次是要實(shí)例化哪一個(gè)類的模式。工廠模式有以下幾種形態(tài):簡(jiǎn)單工廠(SimpleFactory)模式 工廠方法(FactoryMethod)模式 抽象工廠(AbstractFactory)模式簡(jiǎn)單工廠(SimpleFactory)模式比如說(shuō),你有一個(gè)描述你的后花園的系統(tǒng),在你的后花園里有各種的花,但還沒有水果。你現(xiàn)在要往你的系統(tǒng)里引進(jìn)一些新的類,用來(lái)描述下列的水果:   葡萄Grapes草莓Strawberry萍果Apple簡(jiǎn)單工廠(SimpleFactory)模式源代碼源代碼源代

3、碼源代碼簡(jiǎn)單工廠(SimpleFactory)模式作為小花果園的主人兼園丁,也是系統(tǒng)的一部分,自然要由一個(gè)合適的類來(lái)代表,這個(gè)類就是FruitGardener類。源代碼園丁的工作(簡(jiǎn)單工廠)FruitGardener類會(huì)根據(jù)要求,創(chuàng)立出不同的水果類,比如萍果Apple,葡萄Grape或草莓Strawberry的實(shí)例。這里的園丁就如同一個(gè)可以創(chuàng)建水果產(chǎn)品的工廠一樣如果接到不合法的要求,FruitGardener類會(huì)給出例外BadFruitException。源代碼豐收的果園(客戶端)在使用時(shí),只須呼叫FruitGardener的factory()方法即可try{  Fruit

4、Gardenergardener=newFruitGardener();FruitIFgrape=gardener.factory("grape");FruitIFapple=gardener.factory("apple");FruitIFstrawberry=gardener.factory("strawberry");  ...  }  catch(BadFruitExceptione){   ... }小結(jié):簡(jiǎn)單工廠模式的定義總而言之,簡(jiǎn)單工廠模式就是由一個(gè)工廠類根據(jù)參數(shù)來(lái)決定創(chuàng)立出那一種產(chǎn)品類的實(shí)例。小結(jié):簡(jiǎn)單工廠模式框架的源代碼publicclassCreato

5、r{ publicProductfactory(){  returnnewConcreteProduct(); }}publicinterfaceProduct{}publicclassConcreteProductimplementsProduct{ publicConcreteProduct(){}}源代碼:FruitIF接口接口FruitIF的源代碼。這個(gè)接口確定了水果類必備的方法:種植plant(),生長(zhǎng)grow(),以及收獲harvest()。packagecom.javapatterns.simplefactory; publicinterfaceFruitI

6、F{  voidgrow();  voidharvest();  voidplant();  Stringcolor=null;  Stringname=null; }返回源代碼:Apple類萍果是多年生木本植物,因此具備樹齡treeAge性質(zhì)packagecom.javapatterns.simplefactory; publicclassAppleimplementsFruitIF{  publicvoidgrow(){   log("Appleisgrowing...");  }  publicvoidharvest(){   log("Applehasbee

7、nharvested.");  }  publicvoidplant(){   log("Applehasbeenplanted.");  }  publicstaticvoidlog(Stringmsg){   System.out.println(msg);  }  publicintgetTreeAge(){returntreeAge;}  publicvoidsetTreeAge(inttreeAge){this.treeAge=treeAge;}  privateinttreeAge; }返回源代碼:Gr

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。