【正文】
的創(chuàng)建,而是 將具體按鈕的創(chuàng)建過程交給專門的工廠子類去完成 ,我們 先定義一個抽象的按鈕工廠類 , 再定義具體的工廠類來生成圓形按鈕、矩形按鈕、菱形按鈕等 ,它們實現(xiàn)在抽象按鈕工廠類中定義的方法。 在簡單工廠模式中,所有的產(chǎn)品都是由同一個工廠創(chuàng)建,工廠類職責較重,業(yè)務(wù)邏輯較為復(fù)雜,具體產(chǎn)品與工廠類之間的耦合度高,嚴重影響了系統(tǒng)的靈活性和擴展性,而工廠方法模式則可以很好地解決這一問題。 cr e a t e ConcreteProd uctProductConcreteF actory+ factoryMethod ()...: ProductFactory+ factoryMethod ()...: Product工廠方法模式 ?模式結(jié)構(gòu) ?工廠方法模式包含如下角色: ? Product:抽象產(chǎn)品 ? ConcreteProduct:具體產(chǎn)品 ? Factory:抽象工廠 ? ConcreteFactory:具體工廠 工廠方法模式 ?模式分析 ? 工廠方法模式是簡單工廠模式的進一步抽象和推廣。 } 抽象工廠類 工廠方法模式 ? 模式分析 ? 具體工廠類代碼: public class CashPayFactory extends PayMethodFactory { public AbstractPay getPayMethod() { return new CashPay()。 ?xml version=? config classNameCashPayFactory/className /config 工廠方法模式 ? 模式分析 ? Java反射 (Java Reflection): ? 是指 在程序運行時獲取已知名稱的類或已有對象的相關(guān)信息的一種機制 ,包括類的方法、屬性、超類等信息,還包括實例的創(chuàng)建和實例類型的判斷等。 doc = (new File())。 AbstractPay payMethod。 工廠方法模式 ?模式實例與解析 ?實例二:日志記錄器 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 ( ) 。 工廠方法模式 ?模式優(yōu)缺點 ?工廠方法模式的缺點 ? 在添加新產(chǎn)品時, 需要編寫新的具體產(chǎn)品類,而且還要提供與之對應(yīng)的具體工廠類,系統(tǒng)中類的個數(shù)將成對增加,在一定程度上增加了系統(tǒng)的復(fù)雜度 ,有更多的類需要編譯和運行,會給系統(tǒng)帶來一些額外的開銷。 //使用上下文和 JNDI得到消息隊列的引用 Queue q=(Queue)(myQueue)。 ResultSet rs=(select * from UserInfo)。在工廠方法模式中,工廠父類負責定義創(chuàng)建產(chǎn)品對象的公共接口,而工廠子類則負責生成具體的產(chǎn)品對象,這樣做的目的是將產(chǎn)品類的實例化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應(yīng)該實例化哪一個具體產(chǎn)品類。 END Thanks! 。 本章小結(jié) ? 工廠方法模式是簡單工廠模式的進一步抽象和推廣。 ? 產(chǎn)品對象的重復(fù)使用 :工廠對象將已經(jīng)創(chuàng)建過的產(chǎn)品保存到一個集合(如數(shù)組、 List等)中,然后根據(jù)客戶對產(chǎn)品的請求,對集合進行查詢。 (開始發(fā)送消息 ......)。 工廠方法模式 ? 模式適用環(huán)境 ? 在以下情況下可以使用工廠方法模式: ? 一個類不知道它所需要的對象的類 :在工廠方法模式中,客戶端不需要知道具體產(chǎn)品類的類名,只需要知道所對應(yīng)的工廠即可,具體的產(chǎn)品對象由具體工廠類創(chuàng)建;客戶端需要知道創(chuàng)建具體產(chǎn)品的工廠類。Data ba seL og