第四章簡單工廠模式(Jv).pptx

第四章簡單工廠模式(Jv).pptx

ID:82326473

大小:2.85 MB

頁數(shù):30頁

時(shí)間:2024-08-29

上傳者:L.M
第四章簡單工廠模式(Jv).pptx_第1頁
第四章簡單工廠模式(Jv).pptx_第2頁
第四章簡單工廠模式(Jv).pptx_第3頁
第四章簡單工廠模式(Jv).pptx_第4頁
第四章簡單工廠模式(Jv).pptx_第5頁
第四章簡單工廠模式(Jv).pptx_第6頁
第四章簡單工廠模式(Jv).pptx_第7頁
第四章簡單工廠模式(Jv).pptx_第8頁
第四章簡單工廠模式(Jv).pptx_第9頁
第四章簡單工廠模式(Jv).pptx_第10頁
資源描述:

《第四章簡單工廠模式(Jv).pptx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在PPT專區(qū)-天天文庫。

第4章簡單工廠模式 本章教學(xué)內(nèi)容創(chuàng)建型模式創(chuàng)建型模式概述創(chuàng)建型模式簡介簡單工廠模式模式動(dòng)機(jī)與定義模式結(jié)構(gòu)與分析模式實(shí)例與解析模式效果與應(yīng)用模式擴(kuò)展 創(chuàng)建型模式創(chuàng)建型模式概述創(chuàng)建型模式(CreationalPattern)對(duì)類的實(shí)例化過程進(jìn)行了抽象,能夠?qū)④浖K中對(duì)象的創(chuàng)建和對(duì)象的使用分離。為了使軟件的結(jié)構(gòu)更加清晰,外界對(duì)于這些對(duì)象只需要知道它們共同的接口,而不清楚其具體的實(shí)現(xiàn)細(xì)節(jié),使整個(gè)系統(tǒng)的設(shè)計(jì)更加符合單一職責(zé)原則。 創(chuàng)建型模式創(chuàng)建型模式概述創(chuàng)建型模式在創(chuàng)建什么(What),由誰創(chuàng)建(Who),何時(shí)創(chuàng)建(When)等方面都為軟件設(shè)計(jì)者提供了盡可能大的靈活性。創(chuàng)建型模式隱藏了類的實(shí)例的創(chuàng)建細(xì)節(jié),通過隱藏對(duì)象如何被創(chuàng)建和組合在一起達(dá)到使整個(gè)系統(tǒng)獨(dú)立的目的。 創(chuàng)建型模式想吃蘋果!?創(chuàng)建型模式概述 創(chuàng)建型模式通常獲取蘋果的兩種方式自己種蘋果樹去超市買創(chuàng)建型模式概述 創(chuàng)建型模式簡單工廠模式(SimpleFactory)工廠方法模式(FactoryMethod)抽象工廠模式(AbstractFactory)原型模式(Prototype)單例模式(Singleton)建造者模式(Builder)創(chuàng)建型模式簡介 簡單工廠模式模式動(dòng)機(jī)只要說出水果的名字就能得到想要的水果。 簡單工廠模式模式動(dòng)機(jī)考慮一個(gè)簡單的軟件應(yīng)用場景,一個(gè)軟件系統(tǒng)可以提供多個(gè)外觀不同的按鈕(如圓形按鈕、矩形按鈕、菱形按鈕等),這些按鈕都源自同一個(gè)基類,不過在繼承基類后不同的子類修改了部分屬性從而使得它們可以呈現(xiàn)不同的外觀,如果我們希望在使用這些按鈕時(shí),不需要知道這些具體按鈕類的名字,只需要知道表示該按鈕類的一個(gè)參數(shù),并提供一個(gè)調(diào)用方便的方法,把該參數(shù)傳入方法即可返回一個(gè)相應(yīng)的按鈕對(duì)象,此時(shí),就可以使用簡單工廠模式。 簡單工廠模式模式定義簡單工廠模式(SimpleFactoryPattern):又稱為靜態(tài)工廠方法(StaticFactoryMethod)模式,它屬于類創(chuàng)建型模式。在簡單工廠模式中,可以根據(jù)自變量的不同返回不同類的實(shí)例。簡單工廠模式專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。 簡單工廠模式模式結(jié)構(gòu) 簡單工廠模式模式結(jié)構(gòu)簡單工廠模式包含如下角色:Factory:工廠角色Product:抽象產(chǎn)品角色ConcreteProduct:具體產(chǎn)品角色 簡單工廠模式模式分析分析如下代碼:publicvoidpay(Stringtype){if(type.equalsIgnoreCase("cash")){//現(xiàn)金支付處理代碼}elseif(type.equalsIgnoreCase("creditcard")){//信用卡支付處理代碼}elseif(type.equalsIgnoreCase("voucher")){//代金券支付處理代碼}else{……}}代碼復(fù)雜,難以維護(hù) 簡單工廠模式模式分析重構(gòu)后的代碼:publicabstractclassAbstractPay{publicabstractvoidpay();}publicclassCashPayextendsAbstractPay{publicvoidpay(){//現(xiàn)金支付處理代碼}}抽象支付類具體支付類 簡單工廠模式模式分析重構(gòu)后的代碼:publicclassPayMethodFactory{publicstaticAbstractPaygetPayMethod(Stringtype){if(type.equalsIgnoreCase("cash")){returnnewCashPay();//根據(jù)參數(shù)創(chuàng)建具體產(chǎn)品}elseif(type.equalsIgnoreCase("creditcard")){returnnewCreditcardPay();//根據(jù)參數(shù)創(chuàng)建具體產(chǎn)品}……}}支付工廠 簡單工廠模式模式分析將對(duì)象的創(chuàng)建和對(duì)象本身業(yè)務(wù)處理分離可以降低系統(tǒng)的耦合度,使得兩者修改起來都相對(duì)容易。在調(diào)用工廠類的工廠方法時(shí),由于工廠方法是靜態(tài)方法,使用起來很方便,可通過類名直接調(diào)用,而且只需要傳入一個(gè)簡單的參數(shù)即可,在實(shí)際開發(fā)中,還可以在調(diào)用時(shí)將所傳入的參數(shù)保存在XML等格式的配置文件中,修改參數(shù)時(shí)無需修改任何Java源代碼。簡單工廠模式最大的問題在于工廠類的職責(zé)相對(duì)過重,增加新的產(chǎn)品需要修改工廠類的判斷邏輯,這一點(diǎn)與開閉原則是相違背的。簡單工廠模式的要點(diǎn)在于:當(dāng)你需要什么,只需要傳入一個(gè)正確的參數(shù),就可以獲取你所需要的對(duì)象,而無需知道其創(chuàng)建細(xì)節(jié)。 簡單工廠模式模式實(shí)例與解析實(shí)例一:簡單電視機(jī)工廠某電視機(jī)廠專為各知名電視機(jī)品牌代工生產(chǎn)各類電視機(jī),當(dāng)需要海爾牌電視機(jī)時(shí)只需要在調(diào)用該工廠的工廠方法時(shí)傳入?yún)?shù)“Haier”,需要海信電視機(jī)時(shí)只需要傳入?yún)?shù)“Hisense”,工廠可以根據(jù)傳入的不同參數(shù)返回不同品牌的電視機(jī)?,F(xiàn)使用簡單工廠模式來模擬該電視機(jī)工廠的生產(chǎn)過程。 簡單工廠模式模式實(shí)例與解析實(shí)例一:簡單電視機(jī)工廠 簡單工廠模式模式實(shí)例與解析實(shí)例一:簡單電視機(jī)工廠參考代碼演示…… 簡單工廠模式模式實(shí)例與解析實(shí)例二:權(quán)限管理在某OA系統(tǒng)中,系統(tǒng)根據(jù)對(duì)比用戶在登錄時(shí)輸入的賬號(hào)和密碼以及在數(shù)據(jù)庫中存儲(chǔ)的賬號(hào)和密碼是否一致來進(jìn)行身份驗(yàn)證,如果驗(yàn)證通過,則取出存儲(chǔ)在數(shù)據(jù)庫中的用戶權(quán)限等級(jí)(以整數(shù)形式存儲(chǔ)),根據(jù)不同的權(quán)限等級(jí)創(chuàng)建不同等級(jí)的用戶對(duì)象,不同等級(jí)的用戶對(duì)象擁有不同的操作權(quán)限?,F(xiàn)使用簡單工廠模式來設(shè)計(jì)該權(quán)限管理模塊。 簡單工廠模式模式實(shí)例與解析實(shí)例二:權(quán)限管理 簡單工廠模式模式實(shí)例與解析實(shí)例二:權(quán)限管理參考代碼演示…… 簡單工廠模式模式優(yōu)缺點(diǎn)簡單工廠模式的優(yōu)點(diǎn)如下:工廠類含有必要的判斷邏輯,可以決定在什么時(shí)候創(chuàng)建哪一個(gè)產(chǎn)品類的實(shí)例,客戶端可以免除直接創(chuàng)建產(chǎn)品對(duì)象的責(zé)任,而僅僅“消費(fèi)”產(chǎn)品;簡單工廠模式通過這種做法實(shí)現(xiàn)了對(duì)責(zé)任的分割,它提供了專門的工廠類用于創(chuàng)建對(duì)象。客戶端無需知道所創(chuàng)建的具體產(chǎn)品類的類名,只需要知道具體產(chǎn)品類所對(duì)應(yīng)的參數(shù)即可,對(duì)于一些復(fù)雜的類名,通過簡單工廠模式可以減少使用者的記憶量。通過引入配置文件,可以在不修改任何客戶端代碼的情況下更換和增加新的具體產(chǎn)品類,在一定程度上提高了系統(tǒng)的靈活性。 簡單工廠模式模式優(yōu)缺點(diǎn)簡單工廠模式的缺點(diǎn)如下:由于工廠類集中了所有產(chǎn)品創(chuàng)建邏輯,一旦不能正常工作,整個(gè)系統(tǒng)都要受到影響。使用簡單工廠模式將會(huì)增加系統(tǒng)中類的個(gè)數(shù),在一定程序上增加了系統(tǒng)的復(fù)雜度和理解難度。系統(tǒng)擴(kuò)展困難,一旦添加新產(chǎn)品就不得不修改工廠邏輯,在產(chǎn)品類型較多時(shí),有可能造成工廠邏輯過于復(fù)雜,不利于系統(tǒng)的擴(kuò)展和維護(hù)。簡單工廠模式由于使用了靜態(tài)工廠方法,造成工廠角色無法形成基于繼承的等級(jí)結(jié)構(gòu)。 簡單工廠模式模式適用環(huán)境在以下情況下可以使用簡單工廠模式:工廠類負(fù)責(zé)創(chuàng)建的對(duì)象比較少:由于創(chuàng)建的對(duì)象較少,不會(huì)造成工廠方法中的業(yè)務(wù)邏輯太過復(fù)雜;客戶端只知道傳入工廠類的參數(shù),對(duì)于如何創(chuàng)建對(duì)象不關(guān)心:客戶端既不需要關(guān)心創(chuàng)建細(xì)節(jié),甚至連類名都不需要記住,只需要知道類型所對(duì)應(yīng)的參數(shù)。 簡單工廠模式模式應(yīng)用(1)在JDK類庫中廣泛使用了簡單工廠模式,如工具類java.text.DateFormat,它用于格式化一個(gè)本地日期或者時(shí)間。publicfinalstaticDateFormatgetDateInstance();publicfinalstaticDateFormatgetDateInstance(intstyle);publicfinalstaticDateFormatgetDateInstance(intstyle,Localelocale); 簡單工廠模式模式應(yīng)用(2)Java密碼學(xué)參考代碼:DESEncrypt.java//獲取不同加密算法的密鑰生成器KeyGeneratorkeyGen=KeyGenerator.getInstance("DESede");//創(chuàng)建密碼器Ciphercp=Cipher.getInstance("DESede"); 簡單工廠模式模式擴(kuò)展簡單工廠模式的簡化:在有些情況下工廠類可以由抽象產(chǎn)品角色扮演,一個(gè)抽象產(chǎn)品類同時(shí)也是子類的工廠,也就是說把靜態(tài)工廠方法寫到抽象產(chǎn)品類中。 本章小結(jié)創(chuàng)建型模式對(duì)類的實(shí)例化過程進(jìn)行了抽象,能夠?qū)?duì)象的創(chuàng)建與對(duì)象的使用過程分離。簡單工廠模式又稱為靜態(tài)工廠方法模式,它屬于類創(chuàng)建型模式。在簡單工廠模式中,可以根據(jù)自變量的不同返回不同類的實(shí)例。簡單工廠模式專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。簡單工廠模式包含三個(gè)角色:工廠角色負(fù)責(zé)實(shí)現(xiàn)創(chuàng)建所有實(shí)例的內(nèi)部邏輯;抽象產(chǎn)品角色是所創(chuàng)建的所有對(duì)象的父類,負(fù)責(zé)描述所有實(shí)例所共有的公共接口;具體產(chǎn)品角色是創(chuàng)建目標(biāo),所有創(chuàng)建的對(duì)象都充當(dāng)這個(gè)角色的某個(gè)具體類的實(shí)例。 本章小結(jié)簡單工廠模式的要點(diǎn)在于:當(dāng)你需要什么,只需要傳入一個(gè)正確的參數(shù),就可以獲取你所需要的對(duì)象,而無需知道其創(chuàng)建細(xì)節(jié)。簡單工廠模式最大的優(yōu)點(diǎn)在于實(shí)現(xiàn)對(duì)象的創(chuàng)建和對(duì)象的使用分離,將對(duì)象的創(chuàng)建交給專門的工廠類負(fù)責(zé),但是其最大的缺點(diǎn)在于工廠類不夠靈活,增加新的具體產(chǎn)品需要修改工廠類的判斷邏輯代碼,而且產(chǎn)品較多時(shí),工廠方法代碼將會(huì)非常復(fù)雜。簡單工廠模式適用情況包括:工廠類負(fù)責(zé)創(chuàng)建的對(duì)象比較少;客戶端只知道傳入工廠類的參數(shù),對(duì)于如何創(chuàng)建對(duì)象不關(guān)心。

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

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

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(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)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。
最近更新
更多
大家都在看
近期熱門
關(guān)閉