亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于泛型的工廠方法模式實(shí)現(xiàn)方法

        2015-01-10 07:50:02
        科技視界 2015年35期
        關(guān)鍵詞:設(shè)計(jì)模式多態(tài)代碼

        陳 輝

        (浙江商業(yè)職業(yè)技術(shù)學(xué)院信息技術(shù)學(xué)院,浙江 杭州310053)

        0 引言

        設(shè)計(jì)模式是對(duì)于某一類的軟件設(shè)計(jì)問(wèn)題的可重用的解決方案。[1]在軟件開(kāi)發(fā)中,其主要作用為:重用設(shè)計(jì)、共用詞匯、方便交流、易于重構(gòu)。一個(gè)模式有四個(gè)基本要素:1)模式名稱,用于描述模式的問(wèn)題、解決方案和效果;2)問(wèn)題,用于解釋設(shè)計(jì)問(wèn)題和問(wèn)題存在的前因后果;3)解決方案,描述設(shè)計(jì)的組成部分、相互關(guān)系及其各種的職責(zé)和協(xié)作方式;4)效果,描述模式應(yīng)用的效果和使用模式應(yīng)權(quán)衡的問(wèn)題。[2]設(shè)計(jì)模式主要分為創(chuàng)建型、結(jié)構(gòu)型、行為型,工廠方法模式是創(chuàng)建型模式之一,其意圖是“讓子類決定實(shí)例化具體的類”。

        在面向?qū)ο蟪绦蛟O(shè)計(jì)中,封裝變化最主要的技術(shù)是多態(tài)。多態(tài)是同一實(shí)體同時(shí)具有多種形式,即同一操作作用于不同的對(duì)象,產(chǎn)生不同的執(zhí)行結(jié)果。多態(tài)分為動(dòng)多態(tài)、靜多態(tài)。動(dòng)多態(tài)是通過(guò)繼承和虛函數(shù)來(lái)實(shí)現(xiàn)的,在運(yùn)行期間,虛函數(shù)調(diào)用不同子類型的虛成員函數(shù)以實(shí)現(xiàn)不同的功能。靜多態(tài)是通過(guò)泛型中模板實(shí)現(xiàn)的,在編譯期間,接口綁定不同的功能代碼。

        當(dāng)前,設(shè)計(jì)模式的實(shí)現(xiàn)技術(shù)是使用動(dòng)多態(tài),即繼承與虛函數(shù)(接口與實(shí)現(xiàn))。其主要的問(wèn)題是,接口必須在公共基類中預(yù)先設(shè)定,動(dòng)多態(tài)的綁定是入侵性的或者插入式的。針對(duì)這一問(wèn)題,本文以工廠方法模式為例,使用靜多態(tài)給出非入侵性或非插入式的實(shí)現(xiàn)。

        1 工廠方法模式

        工廠方法模式是對(duì)象創(chuàng)建型模式,其意圖是:定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化具體的類,工廠方法將類的實(shí)例化延遲到子類。

        工廠方法模式結(jié)構(gòu)圖如圖1,[3]其參與者分別為:Product定義工廠方法所創(chuàng)建的對(duì)象的接口;ConcreteProduct實(shí)現(xiàn)Product的接口;Creator定義工廠方法,其返回一個(gè)Product類型的對(duì)象,Creator也可以定義一個(gè)工廠方法的缺省實(shí)現(xiàn)以返回一個(gè)缺省的ConcreteProduct實(shí)現(xiàn);ConcreteCreator重定義工廠方法以返回一個(gè)ConcreteProduct對(duì)象。對(duì)象協(xié)作中,Creator依賴子類來(lái)定義工廠方法,其返回ConcreteProduct實(shí)例對(duì)象。

        圖1 工廠方法模式結(jié)構(gòu)圖

        2 泛型與模板

        泛型是現(xiàn)代程序設(shè)計(jì)語(yǔ)言的一種特性。泛型是一種特殊的類型,其將指定類型的工作延遲到客戶端代碼聲明并實(shí)例化類或方法的時(shí)候,泛型將類型參數(shù)化以達(dá)到代碼復(fù)用的目的,從而提高軟件開(kāi)發(fā)工作效率。

        不同的語(yǔ)言支持的泛型的特性不同。.NET泛型是具有占位符(類型參數(shù))的類、結(jié)構(gòu)、接口和方法,這些占位符是類、結(jié)構(gòu)、接口和方法所存儲(chǔ)或使用的一個(gè)或多個(gè)類型的占位符。泛型集合類可以將類型參數(shù)用作其所存儲(chǔ)的對(duì)象的類型的占位符;類型參數(shù)作為其字段的類型及其方法的參數(shù)類型出現(xiàn)。泛型方法可以將其類型參數(shù)用作其返回值的類型或者其某個(gè)形參的類型。Java泛型的參數(shù)只代表類,不能代表個(gè)別對(duì)象。由于Java泛型的類型參數(shù)之實(shí)際類型在編譯時(shí)會(huì)被消除,所以無(wú)法在運(yùn)行時(shí)得知其類型參數(shù)的類型。Java編譯器在編譯泛型時(shí)會(huì)自動(dòng)加入類型轉(zhuǎn)換的編碼,因此其運(yùn)行速度不會(huì)因?yàn)槭褂梅盒投涌?。[4]在C++中,泛型即模板,其無(wú)法對(duì)泛型的類型參數(shù)進(jìn)行約束,在編譯時(shí),每個(gè)使用的封閉泛型類型都有獨(dú)立的編碼產(chǎn)生,編譯器確保其類型安全性。[5]C++模板有兩種類型,函數(shù)模板與類模板。下面以C++模板為例,給出工廠方法模式的實(shí)現(xiàn)方法。

        3 泛型實(shí)現(xiàn)工廠方法模式

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

        圖2 基于泛型的工廠方法模式結(jié)構(gòu)圖

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

        4 優(yōu)點(diǎn)與缺點(diǎn)

        基于泛型的工廠方法模式具有以下優(yōu)點(diǎn):1)無(wú)需通過(guò)公共基類來(lái)表達(dá)接口的共性,更便于實(shí)現(xiàn)內(nèi)建類型的集合;2)不通過(guò)指針進(jìn)行間接調(diào)用,生成的代碼效率較高;3)對(duì)于提供部分接口的具體類型也可以調(diào)用;4)靜多態(tài)在編譯期對(duì)所有的綁定操作進(jìn)行檢查,具有更好的類型安全性。其缺點(diǎn)是:1)不能優(yōu)雅地處理異類集合;2)實(shí)現(xiàn)代碼雖小,但可執(zhí)行生成代碼較大;具體實(shí)現(xiàn)中,可根據(jù)其優(yōu)缺點(diǎn)進(jìn)行選擇。

        5 結(jié)束語(yǔ)

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

        [1]Gamma Erich.設(shè)計(jì)模式可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].北京:北京機(jī)械工業(yè)出版,2000.

        [2]拉爾曼.UML和模式應(yīng)用:面向?qū)ο蠓治雠c設(shè)計(jì)導(dǎo)論[M].北京:北京機(jī)械工業(yè)出版社,2001.

        [3]Shalloway Alan.設(shè)計(jì)模式解析[M].北京:中國(guó)電力出版社,2003.

        [4]Wu T C.Java面向?qū)ο蟪绦蛟O(shè)計(jì)[M].2版.北京:清華大學(xué)出版社,2002.

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

        猜你喜歡
        設(shè)計(jì)模式多態(tài)代碼
        仿生設(shè)計(jì)模式的創(chuàng)新應(yīng)用探索
        玩具世界(2023年6期)2024-01-29 12:14:36
        “1+1”作業(yè)設(shè)計(jì)模式的實(shí)踐探索
        分層多態(tài)加權(quán)k/n系統(tǒng)的可用性建模與設(shè)計(jì)優(yōu)化
        參差多態(tài)而功不唐捐
        交通機(jī)電工程設(shè)計(jì)模式創(chuàng)新探討
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        人多巴胺D2基因啟動(dòng)子區(qū)—350A/G多態(tài)位點(diǎn)熒光素酶表達(dá)載體的構(gòu)建與鑒定及活性檢測(cè)
        国产精品中文字幕日韩精品| 日韩成人大屁股内射喷水| 日韩精品无码免费专区网站| 日韩欧美国产丝袜视频| 亚洲天堂中文字幕君一二三四| 国产精品一品二区三区| 亚洲av免费不卡在线观看| 亚洲va欧美va日韩va成人网| 国产成人啪精品视频免费软件 | 亚洲va久久久噜噜噜久久天堂| 50岁退休熟女露脸高潮| 国产精品一区二区久久精品| 日本岛国大片不卡人妻| 青草草视频在线观看华人免费| 99国产精品久久99久久久| 久久精品国产色蜜蜜麻豆| 国产一在线精品一区在线观看| 蜜桃视频中文在线观看| 亚洲精品综合中文字幕组合| 色综合天天综合欧美综合| 中国农村妇女hdxxxx| 最新国产精品亚洲二区| 女同视频网站一区二区| 上海熟女av黑人在线播放| 国产欧美日韩一区二区三区| 青青青国产精品一区二区| AV在线毛片| 国产精品性色av麻豆| 国产精品多人p群无码| 熟妇人妻无码中文字幕| 亚洲AV成人综合五月天在线观看| 精品国产女主播一区在线观看 | 免费a级毛片出奶水| 日韩欧美精品有码在线观看| 成人黄色片久久久大全| 久久精品成人一区二区三区| 日本xxxx色视频在线播放| 国产成人精品免费视频大全| 中文字幕日本在线乱码| 亚洲精品乱码久久久久久不卡| a人片在线观看苍苍影院|