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

一種基于泛型的橋梁模式實現方法

2014-12-23 08:23:44
科技視界 2014年31期
關鍵詞:橋梁方法

陳 輝

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

0 引言

設計模式是對于某一類的軟件設計問題的可重用的解決方案。[1]在軟件開發中,其主要作用為:重用設計、共用詞匯、方便交流、易于重構。一個模式有四個基本要素:1)模式名稱,用于描述模式的問題、解決方案和效果;2)問題 用于解釋設計問題和問題存在的前因后果;3)解決方案 描述設計的組成部分、相互關系及其各種的職責和協作方式;4)效果 描述模式應用的效果和使用模式應權衡的問題。[2]設計模式主要分為創建型、結構型、行為型,橋梁模式是結構型模式之一,其意圖是“將抽象化與實現脫耦,使得二者可以獨立變化”。

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

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

1 橋梁模式

橋梁模式是對象的結構型模式,其動機是:當一個抽象可能有多個實現時,通常用繼承來協調。抽象類定義對該抽象的接口,具體的子類使用不同的方式實現。此方法不夠靈活,繼承機制將抽象部分與實現部分固定在一起,難以對抽象部分和實現部分獨立進行修改、擴充和重用。為解決上述問題,可使用橋梁模式。

橋梁模式結構圖如圖1 所示,[3]其參與者分別為:Abstraction 定義抽象類的接口,維護一個執行Implementor 類型的指針;RefinedAbstraction 擴充由Abstraction 定義的接口;Implementor 定義實現類的接口,該接口與Abstraction 可以不同,Implementor 接口僅提供基本操作,而Abstraction 定義基于這些基本操作的較高層次的操作;ConcreteImplementor 實現Implementor 接口并定義其具體實現。對象協作中,Abstraction 將client 的請求轉發給Implementor 對象。

2 泛型與模板

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

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

3 泛型實現橋梁模式

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

在基于泛型的橋梁模式實現中,由于基類變成泛型,實現了非入侵性或非插入式的綁定。

同時,基于靜多態的實現代碼數量也減小。

4 優點與缺點

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

5 結束語

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

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

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

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

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

猜你喜歡
橋梁方法
學習方法
手拉手 共搭愛的橋梁
句子也需要橋梁
加固技術創新,為橋梁健康保駕護航
中國公路(2017年11期)2017-07-31 17:56:30
無人機在橋梁檢測中的應用
中國公路(2017年10期)2017-07-21 14:02:37
高性能砼在橋梁中的應用
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 久久女人网| 国产精品微拍| 免费国产好深啊好涨好硬视频| 找国产毛片看| 亚洲天堂网2014| 99热这里只有精品国产99| 欧美国产日韩另类| 久久精品国产国语对白| 成人在线观看不卡| 国产精品网拍在线| 亚洲成人网在线观看| 国产成人亚洲精品色欲AV| 免费一级成人毛片| 伦伦影院精品一区| 亚洲色图在线观看| 国产精品久久国产精麻豆99网站| 亚洲天堂日本| 久草视频精品| 日韩精品一区二区三区大桥未久| 欧美一级在线| 国产午夜人做人免费视频中文| 丰满人妻中出白浆| 日本一本正道综合久久dvd| 最新精品国偷自产在线| 亚洲无码精彩视频在线观看| 国产亚洲欧美日韩在线一区二区三区 | 国产在线自乱拍播放| 5388国产亚洲欧美在线观看| 91青青在线视频| 一级毛片免费不卡在线视频| 亚洲国产清纯| 国产成人高清亚洲一区久久| 亚洲成aⅴ人在线观看| 伊人久久婷婷| 国内视频精品| AV不卡无码免费一区二区三区| 视频一区亚洲| 欧美成人精品一区二区| 亚洲区第一页| 国产精品3p视频| 日韩高清中文字幕| 69视频国产| 国产一在线观看| 国产精品久久久久久久久| 在线国产综合一区二区三区| 欧美日本激情| 蜜桃臀无码内射一区二区三区| 国产伦精品一区二区三区视频优播 | 狠狠色综合网| 最新亚洲av女人的天堂| 真人高潮娇喘嗯啊在线观看| 欧美日韩精品在线播放| 秘书高跟黑色丝袜国产91在线| 亚洲精品视频网| 日本不卡在线播放| 久久精品无码一区二区日韩免费| 欧美精品成人一区二区在线观看| 国产无码网站在线观看| 中文字幕va| 亚洲国产成人在线| 日韩二区三区| 日韩区欧美国产区在线观看| 国产99在线| 国产高清精品在线91| JIZZ亚洲国产| 国产成人做受免费视频| 久久久久久尹人网香蕉| 国产精品深爱在线| 中文字幕丝袜一区二区| 一区二区偷拍美女撒尿视频| 欧美成人看片一区二区三区 | 伊人蕉久影院| 亚洲午夜天堂| 国产交换配偶在线视频| 女人18毛片久久| 男人的天堂久久精品激情| 福利一区三区| 免费jjzz在在线播放国产| 亚洲视频一区| 在线色国产| 国产成人午夜福利免费无码r| 91久久夜色精品国产网站|