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

        ?

        使用泛型建立井筒曲線圖道工廠

        2015-07-03 09:27:29孫斌
        中國(guó)科技縱橫 2015年12期
        關(guān)鍵詞:數(shù)據(jù)類型

        孫斌

        【摘 要】當(dāng)我們需要寫功能相似函數(shù)過(guò)程,同時(shí)可處理int、string、Date或其它數(shù)據(jù)類型時(shí),因方法參數(shù)類型不同,只能分別寫多個(gè)重載函數(shù)過(guò)程處理每種數(shù)據(jù)類型。如能在方法中傳入通用數(shù)據(jù)類型,就可合并代碼。這就自然而然的引入了泛型概念。通過(guò)介紹使用泛型的優(yōu)點(diǎn),說(shuō)明使用泛型原因,結(jié)合井筒曲線圖道類生成,說(shuō)明使用泛型建立抽象工廠方法。

        【關(guān)鍵詞】數(shù)據(jù)類型 泛型 實(shí)例和實(shí)例化

        1 泛型定義和優(yōu)點(diǎn)

        泛型是一種通用的數(shù)據(jù)類型。泛型可通過(guò)反射獲取泛型數(shù)據(jù)類型中使用的類型信息。泛型最常見的用途是創(chuàng)建集合類。.NET類庫(kù)在System.Collections.Generic命名空間中包含幾個(gè)新的集合類。

        使用泛型可方便高效的重用代碼,當(dāng)需要實(shí)現(xiàn)時(shí),再進(jìn)行處理。在.NET中使用泛型,它的數(shù)據(jù)類型和內(nèi)部數(shù)據(jù)可在不導(dǎo)致增加代碼情況下更改,而不管使用的是值類型還是引用類型,都可一次性地編寫,并進(jìn)行測(cè)試和系統(tǒng)部署,可通過(guò)任何類型來(lái)重用它,且都具有類型安全特性。因一般代碼不會(huì)強(qiáng)行對(duì)值類型進(jìn)行裝箱和取消裝箱,或?qū)σ妙愋瓦M(jìn)行向下強(qiáng)制類型轉(zhuǎn)換,所以使我們的程序性能得到顯著提高。

        2 實(shí)際應(yīng)用

        以井筒曲線圖道類工廠為例,建立一個(gè)泛型抽象工廠。

        (1)定義一個(gè)圖道類工廠方法,實(shí)現(xiàn)一個(gè)采用無(wú)參數(shù)構(gòu)造函數(shù)來(lái)創(chuàng)建對(duì)象的工廠WellTrackFactory,代碼如下:

        public class WellTrackFactory : IWellTrackFactory where TTrack : TAbstractTrack, new(){public TAbstractTrack Create(){ return new TTrack(); }}

        (2)解決方法重載問(wèn)題,引入TypeToken類型,定義如下:

        public sealed class TypeToken{

        static private TypeToken instanceValue = new TypeToken();

        static public TypeToken Instance{ get { return instanceValue; }}

        private TypeToken() { }}

        這個(gè)類沒(méi)有成員,且每個(gè)類型實(shí)參只能創(chuàng)建一個(gè)實(shí)例,因此性能較高。但就因該實(shí)例上帶有其類型實(shí)參的類型信息,因此可作為判斷函數(shù)重載依據(jù)。下面就用TypeToken作為區(qū)分生產(chǎn)函數(shù)重載依據(jù),定義一個(gè)生產(chǎn)兩種圖道類的抽象工廠接口,實(shí)現(xiàn)如下:

        public interface IAbstractFactory{

        T1 Create(TypeToken token); T2 Create(TypeToken token);}

        (3)針對(duì)抽象工廠實(shí)現(xiàn)具體工廠。具體工廠是利用生產(chǎn)每種圖道類型單一工廠來(lái)組合實(shí)現(xiàn)。因此只要有每種圖道類型單一工廠就可直接組合生成抽象工廠,而無(wú)需定義一個(gè)專用類來(lái)生成圖道。代碼如下:

        public class FactTrackFactory : IAbstractFactory

        {private IWellTrackFactory factory1;

        private IWellTrackFactory factory2;

        public FactTrackFactory(IFactory f1, IWellTrackFactory f2)

        {factory1 = f1;factory2 = f2;}public T1 Create(TypeToken token)

        {return factory1.Create();}public T2 Create(TypeToken token)

        {return factory2.Create(); }}public static class FactTrackFactory

        {public static FactTrackFactory NewFactory

        T2>(IWellTrackFactory f1, IWellTrackFactory f2)

        {return new FactTrackFactory(f1, f2); }}

        (4)建立實(shí)例使用這個(gè)泛型抽象工廠。以曲線型圖道為例,代碼如下:

        //曲線型圖道public abstract class CurveWellTrack{

        public abstract string TrackName { get; }//圖道名稱

        public abstract string TrackCaption { get; }//圖道圖頭標(biāo)題 }

        下面就可以隨意生成所需的抽象工廠接口,并快速?gòu)默F(xiàn)有的單獨(dú)圖道工廠組合成特定的具體工廠實(shí)現(xiàn)。先定義一個(gè)生產(chǎn)圖道類的方法:

        public static IAbstractFactory WellTrackFactory(string type){if (type == "Line"){

        return FactTrackFactory.NewFactory(new

        WellTrackFactory(),new WellTrackFactory());

        }else if (type == "Rect"){return FactTrackFactory.NewFactory(new WellTrackFactory(),new WellTrackFactory());} return null; }

        (5)將生產(chǎn)出的圖道信息,輸出到窗體中:

        public static void ExportProduct(ListBox lb)

        {//生產(chǎn)兩個(gè)類型圖道IAbstractFactory factory1 = WellTrackFactory("Line");CurveWellTrack track1 = factory1.Create(TypeToken.Instance);

        ImageWellTrack track2 = factory1.Create(TypeToken.Instance);

        lb.Items.Add("圖道1" + track1.TrackName);lb.Items.Add(track1.TrackCaption);

        lb.Items.Add("圖道2" + track2.TrackName);lb.Items.Add(track2.TrackCaption);}

        3 結(jié)語(yǔ)

        文章簡(jiǎn)單介紹了泛型的定義以及優(yōu)點(diǎn),并結(jié)合井筒曲線的圖道類的生成,說(shuō)明了用泛型技術(shù)成功地增強(qiáng)原本重用性較低的抽象工廠的原理,演示了泛型在提高抽象性和代碼重用方面卓越的價(jià)值。

        猜你喜歡
        數(shù)據(jù)類型
        詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
        如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
        基于數(shù)據(jù)類型完善的C語(yǔ)言課程改革研究
        利用絕對(duì)值編碼器精確定位垂直螺旋卸車機(jī)起升機(jī)構(gòu)的方法
        S7—400PLC系統(tǒng)時(shí)間設(shè)置方法及在煉鋼廠中的應(yīng)用
        相似度計(jì)算及其在數(shù)據(jù)挖掘中的應(yīng)用
        VB語(yǔ)言的教學(xué)方法探討
        科技視界(2015年26期)2015-09-11 15:01:24
        數(shù)據(jù)類型研究及在數(shù)據(jù)流讀取中的應(yīng)用
        基于大數(shù)據(jù)的出版流程變革
        出版廣角(2014年14期)2014-08-21 12:29:48
        范疇數(shù)據(jù)類型上的子類型*
        巨人精品福利官方导航| 一个人的视频免费播放在线观看| 日本av一级视频在线观看| 四虎永久在线精品免费一区二区| 少妇人妻陈艳和黑人教练| 日本大肚子孕妇交xxx| 无套内射蜜桃小视频| 欧美久久久久中文字幕| 精品专区一区二区三区| 乳乱中文字幕熟女熟妇| 午夜精品久久久久久久99老熟妇| 国产午夜精品一区二区| 暖暖免费 高清 日本社区在线观看| 亚洲精品乱码久久久久久按摩高清| 久久99精品久久只有精品| 中国美女a级毛片| 无码一区二区波多野结衣播放搜索| 亚洲色AV天天天天天天| 男女性行为免费视频网站| 亚洲欧美色一区二区三区| 亚洲国产成人精品无码区在线观看| 91久久精品人妻一区二区| 三区中文字幕在线观看| 欧美噜噜久久久xxx| 午夜丰满少妇性开放视频| 亚洲日本国产乱码va在线观看| 日韩精品极品系列在线免费视频| 亚洲成av人的天堂在线观看| 五月天综合在线| 一区二区三区精品偷拍| 揄拍成人国产精品视频| 国产精品成年片在线观看| 人妻无码中文专区久久AV| a黄片在线视频免费播放| www射我里面在线观看| 亚洲国产成人无码影院| 国产精品一区二区三区三| 亚洲高清乱码午夜电影网| 无码AV高潮喷水无码专区线| 日本不卡的一区二区三区| 国产女人好紧好爽|