999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java對象的生產模式研究

2011-02-09 01:57:02王雅軒
制造業自動化 2011年4期
關鍵詞:產品方法

王雅軒,頊 聰

(大連外國語學院 軟件學院,大連 116044)

1 Java對象的一般生產方法

Java對象的一般生產方法是用new來創建的,以類Sample為例,如果要創建類Sample的實例對象,只要使用下面的語句即可:

Sample sample=new Sample();

但是,通常在創建類sample的實例時,要做些初始化的工作,比如賦值、查詢數據庫等。這好比工廠中的產品在真正出廠交付客戶之前,要做一些出廠設置或配置之類的工作。這時可以使用類Sample的有參構造函數,這樣生成實例就要寫成:

Sample sample=new Sample(參數);

2 存在的問題

2.1 初始化工作較多時

如果創建sample實例時所做的初始化工作不是像賦值這樣簡單的事,可能是很長一段代碼,如果也寫入構造函數中,這有背于Java的面向對象的封裝和分割的思想,即盡量將長的代碼“切割”成每個小段,再將每個小段“封裝”起來。這樣,可以減少段與段之間的偶合性。以后如果需要修改,只要更改每個局部段即可,而不會對整體中的其他部分產生影響,即不會發生牽一發,而動全身的事情。

2.2 編碼時不能預見需要創建哪一個類的實例時

如果一個系統中存在的類較多,而且在編碼時不能預見需要創建哪一個類的實例,即需要根據一定的條件,來進行選擇性地創建對象時,用一般的生產方法實現起來也比較困難。

2.3 實例的創建信息需要隱藏時

開發人員不希望創建了哪個類的實例以及如何創建實例的信息暴露給外部程序。

3 工廠模式的提出

由于上述問題,我們需要將創建實例的工作與使用實例的工作分開, 也就是說,使創建實例所需要的大量初始化工作從類的構造函數中分離出去,因此我們提出了工廠模式,在工廠模式中,我們就可以把這些復雜的初始化工作,或選擇性地生產產品的方法,或產品族的選擇都可以寫進工廠中。

3.1 工廠模式的分類:

1)簡單工廠模式(Simple Factory)

簡單工廠模式又稱靜態工廠方法模式[1],它把大量具有共同接口的類的實例化的過程都封裝到了一個簡單工廠類里了。它實現了對象的創建的過程與客戶端的相互分離(即將創建對象的具體過程屏蔽隔離起來了),從而避免了客戶端與產品類的直接耦合關系。

2)多型工廠模式(Factory Method)

Factory Method是一種創建性模式,它定義了一個創建對象的接口,但是卻讓子類來決定具體實例化哪一個類.當一個類無法預料要創建哪種類的對象或是一個類需要由子類來指定創建的對象時我們就需要用到Factory Method 模式了。簡單地說,Factory Method可以根據不同的條件產生不同的實例,當然這些不同的實例通常是屬于相同的類型,具有共同的父類。Factory Method把創建這些實例的具體過程封裝起來了,簡化了客戶端的應用,也改善了程序的擴展性,使得將來可以做最小的改動就可以加入新的待創建的類。

3)工具箱工廠模式(Abstract Factory)

抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。 抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產品的具體的情況下,創建多個產品族中的產品對象。

3.2 簡單工廠模式

在簡單工廠模式中,一個工廠類處于對產品類實例化調用的中心位置上,它決定那一個產品類應當被實例化, 如同一個交通警察站在來往的車輛流中,決定放行那一個方向的車輛向那一個方向流動一樣。

圖1 簡單工廠模式角色示意圖

從圖1我們可以看出簡單工廠模式涉及到工廠類角色、抽象產品角色、具體產品角色三個參與者。

1) 工廠類角色Creator:工廠類在客戶端的直接控制下(Create方法)創建產品對象

2)抽象產品角色Product:定義簡單工廠創建的對象的父類或它們共同擁有的接口。可以是一個類、抽象類或接口。

3) 具體產品角色ConcreteProduct:定義工廠具體加工出的對象。

3.3 多型工廠模式

工廠方法模式是簡單工廠模式的進一步抽象化和推廣,工廠方法模式里不再只由一個工廠類決定那一個產品類應當被實例化,這個決定被交給子類去作[2,3]。

圖2 多型工廠模式角色示意圖

從圖2可以看出工廠方法模式涉及到抽象工廠角色、具體工廠角色、抽象產品角色和具體產品角色四個參與者。

1)抽象工廠角色:是工廠方法模式的核心,它負責定義創建抽象產品對象的工廠方法。抽象工廠不能被外界直接調用,但任何在模式中用于創建產品對象的工廠類都必須實現由它所定義的工廠方法。

2)具體工廠角色:是工廠方法模式的對外接口,它負責實現創建具體產品對象的內部邏輯。具體工廠與應用密切相關,可以被外界直接調用,創建所需要的產品。

3)抽象產品角色:是工廠方法模式所創建的所有對象的父類,它負責描述所有具體產品共有的公共接口。

4)具體產品角色:是工廠方法模式的創建目標,所有創建的對象都是充當這一角色的某個具體類的實例。

3.4 工具箱工廠模式

抽象工廠模式是所有形態的工廠模式中最為抽象和最具廣泛性的一種形態,抽象工廠模式是工廠方法模式的進一步擴廣化和抽象化。

圖3 工具箱工廠模式角色示意圖

如圖3所示:當有多個抽象產品角色時,工廠方法模式已經不能滿足要求。根據LSP里氏替換原則,任何接受父類型的地方,都應當能夠接受子類型[4]。因此,實際上系統所需要的,僅僅是類型與這些抽象產品角色相同的一些實例,而不是這些抽象產品的實例。換言之,也就是這些抽象產品的具體子類的實例。工廠類負責創建抽象產品的具體子類的實例。當每個抽象產品都有多于一個的具體子類的時候,工廠角色怎么知道實例化哪一個子類呢?比如每個抽象產品角色都有兩個具體產品。抽象工廠模式提供兩個具體工廠角色,分別對應于這兩個具體產品角色,每一個具體工廠角色只負責某一個產品角色的實例化。每一個具體工廠類只負責創建抽象產品的某一個具體子類的實例。

3.5 三種工廠模式之間的聯系和區別

工廠方法模式和簡單工廠模式在定義上的不同是很明顯的。工廠方法模式的核心是一個抽象工廠類,而不像簡單工廠模式, 把核心放在一個實類上。工廠方法模式可以允許很多實的工廠類從抽象工廠類繼承下來, 從而可以在實際上成為多個簡單工廠模式的綜合,從而推廣了簡單工廠模式。

反過來講,簡單工廠模式是由工廠方法模式退化而來。設想如果我們非常確定一個系統只需要一個實際工廠類, 那么就不妨把抽象工廠類合并到實的工廠類中去。而這樣一來,我們就退化到簡單工廠模式了。

而在抽象工廠模式中,抽象產品可能是一個或多個,從而構成一個或多個產品族。 在只有一個產品族的情況下,抽象工廠模式實際上退化到工廠方法模式。

4 結論

工廠方法為系統結構提供了非常靈活強大的動態擴展機制,在需要的時候,只要更換一下具體的工廠方法,系統其他地方無需任何變換,就有可能將系統功能進行改頭換面的變化。

簡單工廠模式是由一個具體的類去創建其他類的實例,父類是相同的,父類是具體的。

工廠方法模式是有一個抽象的父類定義公共接口,子類負責生成具體的對象,這樣做的目的是將類的實例化操作延遲到子類中完成。

抽象工廠模式提供一個創建一系列相關或相互依賴對象的接口,而無須指定他們具體的類。它針對的是有多個產品的等級結構。而工廠方法模式針對的是一個產品的等級結構。

[1] Steven Metsker, William C.Wake 著,龔波,趙彩琳,陳蓓譯.Java設計模式[M].北京:人民郵電出版社.2007.

[2] 閻宏.Java與模式[M]. 北京:電子工業出版社.2002.

[3] 結城浩.博碩文化譯.設計模式- Java語言中的應用[M].北京: 中國鐵道出版社, 2005.

[4] James W.Cooper 著.王宇,杜琪,杜志秀,譯.Java與設計模式[M].北京:中國電力出版社.2003.

猜你喜歡
產品方法
好產品,可持續
現代裝飾(2022年4期)2022-08-31 01:39:32
從靈感出發,邂逅好產品
現代裝飾(2022年3期)2022-07-05 05:55:06
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
2015產品LOOKBOOK直擊
Coco薇(2015年1期)2015-08-13 02:23:50
賺錢方法
捕魚
新產品
玩具(2009年10期)2009-11-04 02:33:14
產品
個人電腦(2009年9期)2009-09-14 03:18:46
主站蜘蛛池模板: 99一级毛片| 91热爆在线| 国产精品3p视频| 午夜精品久久久久久久无码软件 | 亚洲第一视频区| 在线色国产| 99久久国产综合精品2020| 亚洲高清日韩heyzo| 亚洲va视频| 国产精品极品美女自在线看免费一区二区| 色天天综合| 91欧美亚洲国产五月天| 亚洲天堂视频在线免费观看| 亚洲美女久久| 国产一区二区精品福利| 国产欧美日韩18| 激情综合婷婷丁香五月尤物| 亚洲精品视频免费| 一本大道AV人久久综合| 色噜噜中文网| av在线人妻熟妇| 国产激情在线视频| 在线免费无码视频| 欧美激情网址| 三上悠亚一区二区| 中国特黄美女一级视频| 热99re99首页精品亚洲五月天| 国产高清免费午夜在线视频| 色综合中文字幕| 久久99精品久久久大学生| 国产伦片中文免费观看| 91网在线| 国产又大又粗又猛又爽的视频| 人人91人人澡人人妻人人爽| 成人一区在线| 黑人巨大精品欧美一区二区区| 男女男免费视频网站国产| 精品一区二区久久久久网站| 欧美精品成人一区二区视频一| 国产亚洲高清在线精品99| 99热这里只有免费国产精品 | 亚洲无限乱码| 91在线精品麻豆欧美在线| 亚洲资源站av无码网址| 国产在线麻豆波多野结衣| 国产精品欧美在线观看| 国产精品乱偷免费视频| 亚洲黄色网站视频| 色综合久久久久8天国| 麻豆国产原创视频在线播放 | 色综合久久无码网| 91香蕉视频下载网站| 四虎精品国产永久在线观看| 欧美日本激情| 久久五月天综合| 青青青国产免费线在| 国产经典免费播放视频| 欧美日韩国产高清一区二区三区| 无套av在线| 国产精品伦视频观看免费| 操国产美女| 国产天天射| 欧洲日本亚洲中文字幕| 免费毛片全部不收费的| 十八禁美女裸体网站| 日韩高清在线观看不卡一区二区| 国产无码在线调教| 久久这里只有精品免费| 亚洲中文字幕av无码区| 美女国产在线| 欧美在线导航| 韩日无码在线不卡| 久久久久久尹人网香蕉| 韩日无码在线不卡| 免费在线看黄网址| 热九九精品| 亚洲激情区| 国产18页| 亚洲第一黄色网| 国产在线精品人成导航| 在线欧美国产| 综合成人国产|