資源描述:
《《簡(jiǎn)單工廠模式》PPT課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第4章簡(jiǎn)單工廠模式本章教學(xué)內(nèi)容創(chuàng)建型模式創(chuàng)建型模式概述創(chuàng)建型模式簡(jiǎn)介簡(jiǎn)單工廠模式模式動(dòng)機(jī)與定義模式結(jié)構(gòu)與分析模式實(shí)例與解析模式效果與應(yīng)用模式擴(kuò)展創(chuàng)建型模式創(chuàng)建型模式概述創(chuàng)建型模式(CreationalPattern)對(duì)類的實(shí)例化過(guò)程進(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),由誰(shuí)創(chuàng)建(Who),何時(shí)創(chuàng)建(Whe
2、n)等方面都為軟件設(shè)計(jì)者提供了盡可能大的靈活性。創(chuàng)建型模式隱藏了類的實(shí)例的創(chuàng)建細(xì)節(jié),通過(guò)隱藏對(duì)象如何被創(chuàng)建和組合在一起達(dá)到使整個(gè)系統(tǒng)獨(dú)立的目的。創(chuàng)建型模式想吃蘋果!?創(chuàng)建型模式概述創(chuàng)建型模式概述創(chuàng)建型模式獲取蘋果的兩種方式自己種蘋果樹去超市買創(chuàng)建型模式簡(jiǎn)單工廠模式(SimpleFactory)工廠方法模式(FactoryMethod)抽象工廠模式(AbstractFactory)建造者模式(Builder)原型模式(Prototype)單例模式(Singleton)創(chuàng)建型模式簡(jiǎn)介簡(jiǎn)單工廠模式模式動(dòng)機(jī)只需要知道
3、水果的名字則可得到相應(yīng)的水果簡(jiǎn)單工廠模式模式動(dòng)機(jī)考慮一個(gè)簡(jiǎn)單的軟件應(yīng)用場(chǎng)景,一個(gè)軟件系統(tǒng)可以提供多個(gè)外觀不同的按鈕(如圓形按鈕、矩形按鈕、菱形按鈕等),這些按鈕都源自同一個(gè)基類,不過(guò)在繼承基類后不同的子類修改了部分屬性從而使得它們可以呈現(xiàn)不同的外觀,如果我們希望在使用這些按鈕時(shí),不需要知道這些具體按鈕類的名字,只需要知道表示該按鈕類的一個(gè)參數(shù),并提供一個(gè)調(diào)用方便的方法,把該參數(shù)傳入方法即可返回一個(gè)相應(yīng)的按鈕對(duì)象,此時(shí),就可以使用簡(jiǎn)單工廠模式。簡(jiǎn)單工廠模式模式定義簡(jiǎn)單工廠模式(SimpleFactoryPatt
4、ern):又稱為靜態(tài)工廠方法(StaticFactoryMethod)模式,它屬于類創(chuàng)建型模式。在簡(jiǎn)單工廠模式中,可以根據(jù)參數(shù)的不同返回不同類的實(shí)例。簡(jiǎn)單工廠模式專門定義一個(gè)類來(lái)負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。簡(jiǎn)單工廠模式模式結(jié)構(gòu)簡(jiǎn)單工廠模式模式結(jié)構(gòu)簡(jiǎn)單工廠模式包含如下角色:Factory:工廠角色Product:抽象產(chǎn)品角色ConcreteProduct:具體產(chǎn)品角色簡(jiǎn)單工廠模式模式分析分析如下代碼:publicvoidpay(Stringtype){if(type.equalsIg
5、noreCase("cash")){cashpayx=newcashpay()…..}elseif(type.equalsIgnoreCase("creditcard")){CreditcardPayx=newCreditcardPay()….}elseif(type.equalsIgnoreCase("voucher")){Voucherpayx=newVoucherpay()…}else{……}}對(duì)象創(chuàng)建和業(yè)務(wù)處理混合在一起,代碼復(fù)雜,難以維護(hù)。簡(jiǎn)單工廠模式模式分析上述代碼可表示為下圖:例如,當(dāng)修改對(duì)象服
6、務(wù)類名或創(chuàng)建方式時(shí),所有的客戶應(yīng)用都需要更改。較高的耦合!客戶應(yīng)用需要知道對(duì)象創(chuàng)建細(xì)節(jié),如服務(wù)類名,創(chuàng)建方式等。工廠負(fù)責(zé)服務(wù)的實(shí)例化,客戶端采用統(tǒng)一的方式創(chuàng)建對(duì)象。當(dāng)修改對(duì)象服務(wù)類名時(shí),只需修改工廠。有效降低了應(yīng)用程序與服務(wù)對(duì)象之間的耦合性,通過(guò)工廠來(lái)解耦,封裝可變部分,提供程序的應(yīng)對(duì)變化的適應(yīng)能力。簡(jiǎn)單工廠模式模式分析重構(gòu)后的代碼:publicabstractclassAbstractPay{publicabstractvoidpay();}publicclassCashPayextendsAbstract
7、Pay{publicvoidpay(){//現(xiàn)金支付處理代碼}}抽象支付類具體支付類簡(jiǎn)單工廠模式模式分析重構(gòu)后的代碼:publicclassPayMethodFactory{publicstaticAbstractPaygetPayMethod(Stringtype){if(type.equalsIgnoreCase("cash")){returnnewCashPay();//根據(jù)參數(shù)創(chuàng)建具體產(chǎn)品}elseif(type.equalsIgnoreCase("creditcard")){returnnewCre
8、ditcardPay();//根據(jù)參數(shù)創(chuàng)建具體產(chǎn)品}……}}支付工廠簡(jiǎn)單工廠模式模式分析將對(duì)象的創(chuàng)建和對(duì)象本身業(yè)務(wù)處理分離可以降低二者的依賴,以降低系統(tǒng)的耦合度,使得兩者修改起來(lái)都相對(duì)容易。在調(diào)用工廠類的工廠方法時(shí),由于工廠方法是靜態(tài)方法,使用起來(lái)很方便,可通過(guò)類名直接調(diào)用,而且只需要傳入一個(gè)簡(jiǎn)單的參數(shù)即可,在實(shí)際開(kāi)發(fā)中,還可以在調(diào)用時(shí)將所傳入的參數(shù)保存在XML等格式的配置文件中,修改參數(shù)時(shí)無(wú)須修改