抽象工廠模式_第1頁
抽象工廠模式_第2頁
抽象工廠模式_第3頁
抽象工廠模式_第4頁
抽象工廠模式_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、抽象工廠模式可以向客戶端提供一個接口,使得客戶端在不必指定產(chǎn)品具體類型的情況下,創(chuàng)建多個產(chǎn) 品族中的產(chǎn)品對象。這就是抽象工廠模式的用意。每個模式都是針對一定問題的解決方案。抽象工廠模式面對的問題是多產(chǎn)品等級結構的系統(tǒng)設計。在學習抽象工廠具體實例之前,應該明白兩個重要的概念:產(chǎn)品族和產(chǎn)品等級。產(chǎn)品族:是指位于不同產(chǎn)品等級結構中,功能相關聯(lián)的產(chǎn)品組成的家族。比如AMD的CPU和ADM芯 片的主板,組成一個家族。Intel的CPU和Intel芯片的主板,又組成一個家族。而這兩個家族都來自于 兩個產(chǎn)品等級:CPU,主板。一個等級結構是由相同的結構的產(chǎn)品組成,示意圖如下:理解這個產(chǎn)品結構是理解抽象工廠模

2、式的關鍵所在,所以我不惜花費時間來畫此圖。如果領悟不到此圖 的含義,就無法區(qū)分工廠方法模式和抽象工廠模式的區(qū)別。從上圖可以看出,抽象工廠模式的每個工廠創(chuàng)造出來的都是一族產(chǎn)品,而不是一個或者一組。組是可以 隨意組合的!其實兩個就這點點差別,呵呵,估計現(xiàn)在你已經(jīng)差不多明白了抽象工廠模式的含義。不廢話 了,看個例子,真相將大白于天下!1.3.1抽象工廠模式在農場中的實現(xiàn)背景聰明的農場主總是讓自己的莊園越來越有價值,農場”在經(jīng)歷了簡單工廠模式和工廠模式后,不斷的擴 大生產(chǎn)。如今,再次面臨新的大發(fā)展,一項重要的工作就是引進塑料大棚技術,在大棚里種植熱帶(Trop ical)和亞熱帶(Northern)的

3、水果和蔬菜,用以滿足市場需求,獲取更大的利益。產(chǎn)品角色圖經(jīng)過分析,對產(chǎn)品角色進行分析得出下圖系統(tǒng)設計經(jīng)過分析,所謂的各個園丁其實就是工廠角色,而蔬菜和水果則是產(chǎn)品角色。將抽象工廠模式用于農場 中,系統(tǒng)設計圖如下:卜一呷實現(xiàn)源碼抽象工廠:Gardener.javapackage com.lavasoft.patterns.abstractfactory.ybms;/*Created by IntelliJ IDEA.FileName:Gardener.javaUser:LavaSoftDate:2006-12-5Time:22:55:23*Java與

4、模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(農場應用)ReadMe:抽象工廠角色:工廠接口 */public interface Gardener public Fruit createFruit(String name);public Veggie createVeggie(String name);抽象水果產(chǎn)品:Fruit.javapackage com.lavasoft.patterns.abstractfactory.ybms;/*Created by IntelliJ IDEA.FileName:Fruit.javaUser:LavaSoftDate:2006-

5、12-5Time:22:54:15*Java與模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(農場應用)ReadMe:抽象產(chǎn)品角色:水果接口 */public interface Fruit 抽象蔬菜產(chǎn)品:Veggie.javapackage com.lavasoft.patterns.abstractfactory.ybms;/*Created by IntelliJ IDEA.FileName:Veggie.javaUser:LavaSoftDate:2006-12-5Time:22:56:22*Java與模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(

6、農場應用)ReadMe:抽象產(chǎn)品角色:蔬菜接口*/public interface Veggie 熱帶水果:TropicalFruit.javapackage com.lavasoft.patterns.abstractfactory.ybms;/*Created by IntelliJ IDEA.FileName:TropicalFruit.javaUser:LavaSoftDate:2006-12-5Time:22:57:08*Java與模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(農場應用)ReadMe:具體產(chǎn)品角色:熱帶水果 */public class Tropi

7、calFruit implements Fruit private String name;public TropicalFruit(String name) System.out.println(熱帶工廠為您創(chuàng)建了:熱帶水果一+name);public String getName() return name;public void setName(String name) = name;熱帶蔬菜:TropicalVeggie.javapackage com.lavasoft.patterns.abstractfactory.ybms;/*Created by Intel

8、liJ IDEA.FileName:TropicalVeggie.javaUser:LavaSoftDate:2006-12-5Time:22:58:03*Java與模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(農場應用)ReadMe:具體產(chǎn)品角色:熱帶蔬菜 */public class TropicalVeggie implements Veggie private String name;public TropicalVeggie(String name) System.out.println(熱帶工廠為您創(chuàng)建了:熱帶水果一+name); public String g

9、etName() return name;public void setName(String name) = name;亞熱帶水果:NorthernFruit.javapackage com.lavasoft.patterns.abstractfactory.ybms;/*Created by IntelliJ IDEA.FileName:NorthernFruit.javaUser:LavaSoftDate:2006-12-5Time:22:58:55*Java與模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(農場應用)ReadMe:具體產(chǎn)品角色:亞熱

10、帶水果 */public class NorthernFruit implements Fruit private String name;public NorthernFruit(String name) System.out.println(亞熱帶工廠為您創(chuàng)建了:亞熱帶水果一+name);public String getName() return name;public void setName(String name) = name;亞熱帶蔬菜:NorthernVeggie.javapackage com.lavasoft.patterns.abstractfact

11、ory.ybms;/*Created by IntelliJ IDEA.FileName:NorthernVeggie.javaUser:LavaSoftDate:2006-12-5Time:22:59:36*Java與模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(農場應用)* ReadMe:具體產(chǎn)品角色:亞熱帶蔬菜*/public class NorthernVeggie implements Veggie private String name;public NorthernVeggie(String name) System.out.println(亞熱帶工廠為您創(chuàng)建

12、了:亞熱帶蔬菜一+name); public String getName() return name;public void setName(String name) = name;熱帶工廠:TropicalGardener.java/*Created by IntelliJ IDEA.FileName:TropicalGardener.javaUser:LavaSoftDate:2006-12-5Time:23:01:49*Java與模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(農場應用)ReadMe:具體工廠角色:熱帶工廠 */public cla

13、ss TropicalGardener implements Gardener public Fruit createFruit(String name) return new TropicalFruit(name);public Veggie createVeggie(String name) return new TropicalVeggie(name);亞熱帶工廠:NorthernGardener.javapackage com.lavasoft.patterns.abstractfactory.ybms;/*Created by IntelliJ IDEA.FileName:North

14、ernGardener.javaUser:LavaSoftDate:2006-12-5Time: 23:00:31*Java與模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(農場應用)ReadMe:具體工廠角色:亞熱帶工廠*/public class NorthernGardener implements Gardener public Fruit createFruit(String name) return new NorthernFruit(name);public Veggie createVeggie(String name) return new Northern

15、Veggie(name);測試類(客戶端):TestApp.javapackage com.lavasoft.patterns.abstractfactory.ybms;/*Created by IntelliJ IDEA.FileName:TestApp.javaUser: LavaSoftDate: 2006-12-5Time: 23:03:22*Java與模式(-閻宏博士著)讀書筆記*工廠模式-抽象工廠模式-一般性模式(農場應用)ReadMe:測試類(客戶端) */public class TestApp private void test()Veggie tv,nv;Fruit tf,

16、nf;TropicalGardener tg = new TropicalGardener();NorthernGardener ng = new NorthernGardener();tv=tg.createVeggie(熱帶菜葉);nv=ng.createVeggie(東北甜菜);tf=tg.createFruit(海南椰子);nf=ng.createFruit(雪梨);public static void main(String args)TestApp test=new TestApp();test.test();.11測試運行結果熱帶工廠為您創(chuàng)建了:熱帶水果一熱帶菜葉亞熱帶工廠為您創(chuàng)建了:亞熱帶蔬菜一東北甜菜熱帶工廠為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論