資源描述:
《簡單工廠模式課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第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)建(Whe
2、n)等方面都為軟件設(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)建造者模式(Builder)原型模式(Prototype)單例模式(Singleton)創(chuàng)建型模式簡介簡單工廠模式模式動(dòng)機(jī)只需要知道
3、水果的名字則可得到相應(yīng)的水果簡單工廠模式模式動(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í),就可以使用簡單工廠模式。簡單工廠模式模式定義簡單工廠模式(SimpleFactoryPatt
4、ern):又稱為靜態(tài)工廠方法(StaticFactoryMethod)模式,它屬于類創(chuàng)建型模式。在簡單工廠模式中,可以根據(jù)參數(shù)的不同返回不同類的實(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.equalsIg
5、noreCase("cash")){//現(xiàn)金支付處理代碼}elseif(type.equalsIgnoreCase("creditcard")){//信用卡支付處理代碼}elseif(type.equalsIgnoreCase("voucher")){//代金券支付處理代碼}else{……}}代碼復(fù)雜,難以維護(hù)簡單工廠模式模式分析重構(gòu)后的代碼:publicabstractclassAbstractPay{publicabstractvoidpay();}publicclassCashPayextendsAbs
6、tractPay{publicvoidpay(){//現(xiàn)金支付處理代碼}}抽象支付類具體支付類簡單工廠模式模式分析重構(gòu)后的代碼:publicclassPayMethodFactory{publicstaticAbstractPaygetPayMethod(Stringtype){if(type.equalsIgnoreCase("cash")){returnnewCashPay();//根據(jù)參數(shù)創(chuàng)建具體產(chǎn)品}elseif(type.equalsIgnoreCase("creditcard")){returnn
7、ewCreditcardPay();//根據(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)與開閉原
8、則是相違背的。簡單工廠模式的要點(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)使用