【正文】
END Thanks! 。 ? 工廠方法模式的主要優(yōu)點(diǎn)是增加新的產(chǎn)品類時(shí)無須修改現(xiàn)有系統(tǒng),并封裝了產(chǎn)品對(duì)象的創(chuàng)建細(xì)節(jié),系統(tǒng)具有良好的靈活性和可擴(kuò)展性;其缺點(diǎn)在于增加新產(chǎn)品的同時(shí)需要增加新的工廠,導(dǎo)致系統(tǒng)類的個(gè)數(shù)成對(duì)增加,在一定程度上增加了系統(tǒng)的復(fù)雜性。在工廠方法模式中,核心的工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建工作交給子類去做。 本章小結(jié) ? 工廠方法模式是簡單工廠模式的進(jìn)一步抽象和推廣。在工廠方法模式中,工廠父類負(fù)責(zé)定義創(chuàng)建產(chǎn)品對(duì)象的公共接口,而工廠子類則負(fù)責(zé)生成具體的產(chǎn)品對(duì)象,這樣做的目的是將產(chǎn)品類的實(shí)例化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應(yīng)該實(shí)例化哪一個(gè)具體產(chǎn)品類。當(dāng)只有一個(gè)具體工廠,在具體工廠中可以創(chuàng)建所有的產(chǎn)品對(duì)象,并且工廠方法設(shè)計(jì)為靜態(tài)方法時(shí),工廠方法模式就退化成簡單工廠模式。 ? 多態(tài)性的喪失和模式的退化 :如果工廠僅僅返回一個(gè)具體產(chǎn)品對(duì)象,便違背了工廠方法的用意,發(fā)生退化,此時(shí)就不再是工廠方法模式了。 ? 產(chǎn)品對(duì)象的重復(fù)使用 :工廠對(duì)象將已經(jīng)創(chuàng)建過的產(chǎn)品保存到一個(gè)集合(如數(shù)組、 List等)中,然后根據(jù)客戶對(duì)產(chǎn)品的請(qǐng)求,對(duì)集合進(jìn)行查詢。 ResultSet rs=(select * from UserInfo)。password=)。 DatabaseName=DB。 (開始發(fā)送消息 ......)。 //使用上下文和 JNDI得到消息隊(duì)列的引用 Queue q=(Queue)(myQueue)。 //使用連接工廠創(chuàng)建一個(gè)連接 QueueConnection qConn=()。 ? 將創(chuàng)建對(duì)象的任務(wù)委托給多個(gè)工廠子類中的某一個(gè),客戶端在使用時(shí)可以無須關(guān)心是哪一個(gè)工廠子類創(chuàng)建產(chǎn)品子類,需要時(shí)再動(dòng)態(tài)指定 ,可將具體工廠類的類名存儲(chǔ)在配置文件或數(shù)據(jù)庫中。 工廠方法模式 ? 模式適用環(huán)境 ? 在以下情況下可以使用工廠方法模式: ? 一個(gè)類不知道它所需要的對(duì)象的類 :在工廠方法模式中,客戶端不需要知道具體產(chǎn)品類的類名,只需要知道所對(duì)應(yīng)的工廠即可,具體的產(chǎn)品對(duì)象由具體工廠類創(chuàng)建;客戶端需要知道創(chuàng)建具體產(chǎn)品的工廠類。 工廠方法模式 ?模式優(yōu)缺點(diǎn) ?工廠方法模式的缺點(diǎn) ? 在添加新產(chǎn)品時(shí), 需要編寫新的具體產(chǎn)品類,而且還要提供與之對(duì)應(yīng)的具體工廠類,系統(tǒng)中類的個(gè)數(shù)將成對(duì)增加,在一定程度上增加了系統(tǒng)的復(fù)雜度 ,有更多的類需要編譯和運(yùn)行,會(huì)給系統(tǒng)帶來一些額外的開銷。 ? 使用工廠方法模式的另一個(gè)優(yōu)點(diǎn)是 在系統(tǒng)中加入新產(chǎn)品時(shí),無須修改抽象工廠和抽象產(chǎn)品提供的接口,無須修改客戶端,也無須修改其他的具體工廠和具體產(chǎn)品 ,而 只要添加一個(gè)具體工廠和具體產(chǎn)品就可以了。它能夠使 工廠可以自主確定創(chuàng)建何種產(chǎn)品對(duì)象,而如何創(chuàng)建這個(gè)對(duì)象的細(xì)節(jié)則完全封裝在具體工廠內(nèi)部 。Data ba seL og+ writeL og ()...: voidClient工廠方法模式 ? 模式優(yōu)缺點(diǎn) ? 工廠方法模式的優(yōu)點(diǎn) ? 在工廠方法模式中,工廠方法用來創(chuàng)建客戶所需要的產(chǎn)品,同時(shí)還向客戶隱藏了哪種具體產(chǎn)品類將被實(shí)例化這一細(xì)節(jié), 用戶只需要關(guān)心所需產(chǎn)品對(duì)應(yīng)的工廠,無須關(guān)心創(chuàng)建細(xì)節(jié),甚至無須知道具體產(chǎn)品類的類名 。 工廠方法模式 ?模式實(shí)例與解析 ?實(shí)例二:日志記錄器 cr e a t e cr e a t e ......r e t u r n n e w Fi l e L o g ( ) 。Haie rT V Fac tory+ pro du ceT V ()...: T VT V Fac tory+ pro du ceT V ()...: T VHaie rT V+ pla y ()...: voidTV+ pla y ().