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

一種基于泛型的工廠方法模式實現方法

2015-01-10 07:50:02
科技視界 2015年35期
關鍵詞:方法

陳 輝

(浙江商業職業技術學院信息技術學院,浙江 杭州310053)

0 引言

設計模式是對于某一類的軟件設計問題的可重用的解決方案。[1]在軟件開發中,其主要作用為:重用設計、共用詞匯、方便交流、易于重構。一個模式有四個基本要素:1)模式名稱,用于描述模式的問題、解決方案和效果;2)問題,用于解釋設計問題和問題存在的前因后果;3)解決方案,描述設計的組成部分、相互關系及其各種的職責和協作方式;4)效果,描述模式應用的效果和使用模式應權衡的問題。[2]設計模式主要分為創建型、結構型、行為型,工廠方法模式是創建型模式之一,其意圖是“讓子類決定實例化具體的類”。

在面向對象程序設計中,封裝變化最主要的技術是多態。多態是同一實體同時具有多種形式,即同一操作作用于不同的對象,產生不同的執行結果。多態分為動多態、靜多態。動多態是通過繼承和虛函數來實現的,在運行期間,虛函數調用不同子類型的虛成員函數以實現不同的功能。靜多態是通過泛型中模板實現的,在編譯期間,接口綁定不同的功能代碼。

當前,設計模式的實現技術是使用動多態,即繼承與虛函數(接口與實現)。其主要的問題是,接口必須在公共基類中預先設定,動多態的綁定是入侵性的或者插入式的。針對這一問題,本文以工廠方法模式為例,使用靜多態給出非入侵性或非插入式的實現。

1 工廠方法模式

工廠方法模式是對象創建型模式,其意圖是:定義一個用于創建對象的接口,讓子類決定實例化具體的類,工廠方法將類的實例化延遲到子類。

工廠方法模式結構圖如圖1,[3]其參與者分別為:Product定義工廠方法所創建的對象的接口;ConcreteProduct實現Product的接口;Creator定義工廠方法,其返回一個Product類型的對象,Creator也可以定義一個工廠方法的缺省實現以返回一個缺省的ConcreteProduct實現;ConcreteCreator重定義工廠方法以返回一個ConcreteProduct對象。對象協作中,Creator依賴子類來定義工廠方法,其返回ConcreteProduct實例對象。

圖1 工廠方法模式結構圖

2 泛型與模板

泛型是現代程序設計語言的一種特性。泛型是一種特殊的類型,其將指定類型的工作延遲到客戶端代碼聲明并實例化類或方法的時候,泛型將類型參數化以達到代碼復用的目的,從而提高軟件開發工作效率。

不同的語言支持的泛型的特性不同。.NET泛型是具有占位符(類型參數)的類、結構、接口和方法,這些占位符是類、結構、接口和方法所存儲或使用的一個或多個類型的占位符。泛型集合類可以將類型參數用作其所存儲的對象的類型的占位符;類型參數作為其字段的類型及其方法的參數類型出現。泛型方法可以將其類型參數用作其返回值的類型或者其某個形參的類型。Java泛型的參數只代表類,不能代表個別對象。由于Java泛型的類型參數之實際類型在編譯時會被消除,所以無法在運行時得知其類型參數的類型。Java編譯器在編譯泛型時會自動加入類型轉換的編碼,因此其運行速度不會因為使用泛型而加快。[4]在C++中,泛型即模板,其無法對泛型的類型參數進行約束,在編譯時,每個使用的封閉泛型類型都有獨立的編碼產生,編譯器確保其類型安全性。[5]C++模板有兩種類型,函數模板與類模板。下面以C++模板為例,給出工廠方法模式的實現方法。

3 泛型實現工廠方法模式

基于泛型的靜多態為實現設計模式提供了新方法。靜多態的實現類型在編譯期中確定,從而可以避免使用指針,其具備更好的類型安全性,更高的效率。下面是其實現結構圖(圖2)。

圖2 基于泛型的工廠方法模式結構圖

在基于泛型的工廠方法模式實現中,由于基類變成泛型,實現了非入侵性或非插入式的綁定。同時,基于靜多態的實現代碼數量也減小。

4 優點與缺點

基于泛型的工廠方法模式具有以下優點:1)無需通過公共基類來表達接口的共性,更便于實現內建類型的集合;2)不通過指針進行間接調用,生成的代碼效率較高;3)對于提供部分接口的具體類型也可以調用;4)靜多態在編譯期對所有的綁定操作進行檢查,具有更好的類型安全性。其缺點是:1)不能優雅地處理異類集合;2)實現代碼雖小,但可執行生成代碼較大;具體實現中,可根據其優缺點進行選擇。

5 結束語

綜上所述,工廠方法模式可通過繼承與虛函數實現,也可通過泛型和模板實現。不同封裝變化的技術可以實現相同的功能,本文給出了工廠方法模式基于泛型的實現方法及代碼,其他模式也可通過泛型實現。

[1]Gamma Erich.設計模式可復用面向對象軟件的基礎[M].北京:北京機械工業出版,2000.

[2]拉爾曼.UML和模式應用:面向對象分析與設計導論[M].北京:北京機械工業出版社,2001.

[3]Shalloway Alan.設計模式解析[M].北京:中國電力出版社,2003.

[4]Wu T C.Java面向對象程序設計[M].2版.北京:清華大學出版社,2002.

[5][美]MatthewH.Austern著,侯捷譯.泛型編程與 STL[M].中國電力出版社,2003.

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學反應多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 亚洲精品桃花岛av在线| 92午夜福利影院一区二区三区| 国产办公室秘书无码精品| 中文成人在线| 无码综合天天久久综合网| 国产乱子伦手机在线| 精品亚洲麻豆1区2区3区| 中文字幕在线观| lhav亚洲精品| 伊人色天堂| 日韩精品久久久久久久电影蜜臀| 国产成人综合久久| 国产免费久久精品99re丫丫一| 91精品国产无线乱码在线| 亚洲国产天堂久久九九九| 四虎永久免费在线| 中文字幕亚洲精品2页| 九九热免费在线视频| 国产日韩精品欧美一区喷| 亚洲一区二区约美女探花| 亚洲国产欧洲精品路线久久| 综合天天色| 91久久国产综合精品女同我| 久久一本精品久久久ー99| 色悠久久综合| 亚洲成人高清无码| 国产亚洲高清视频| 97青青青国产在线播放| 欧美国产菊爆免费观看| 国模粉嫩小泬视频在线观看 | 制服丝袜 91视频| 久久精品无码中文字幕| 成人午夜亚洲影视在线观看| 国产精品微拍| 欧美成人午夜视频| 国产成人精品一区二区三在线观看| 国内视频精品| 精品久久香蕉国产线看观看gif| 毛片a级毛片免费观看免下载| 亚洲日韩AV无码一区二区三区人| 天天摸天天操免费播放小视频| 亚洲精品免费网站| 人人艹人人爽| 嫩草在线视频| 欧美日韩一区二区三区在线视频| 99久久国产综合精品女同 | 欧美视频二区| 日韩精品久久久久久久电影蜜臀| 亚洲男人天堂久久| 国产拍在线| 亚洲一区国色天香| 老司机午夜精品视频你懂的| 日韩人妻无码制服丝袜视频| 青青久久91| 精品国产一二三区| 国产v欧美v日韩v综合精品| 国产污视频在线观看| 无码区日韩专区免费系列| 国产97公开成人免费视频| 色婷婷在线影院| 久久久久国产精品嫩草影院| 久久婷婷六月| 国产精品主播| 国产福利一区视频| 免费观看男人免费桶女人视频| 五月综合色婷婷| 亚洲精品成人福利在线电影| 啦啦啦网站在线观看a毛片| 波多野结衣亚洲一区| 亚洲国产日韩视频观看| 日韩av电影一区二区三区四区| 久热中文字幕在线| 精品视频在线观看你懂的一区| 久久久久无码精品国产免费| 夜色爽爽影院18禁妓女影院| 亚洲欧美h| 精品亚洲欧美中文字幕在线看 | 欧美日韩国产在线观看一区二区三区 | 91免费在线看| 婷婷亚洲综合五月天在线| 日本少妇又色又爽又高潮| 国产精品美女自慰喷水|