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

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

2015-07-03 09:27:29孫斌
中國(guó)科技縱橫 2015年12期

孫斌

【摘 要】當(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)解決方法重載問題,引入TypeToken類型,定義如下:

public sealed class TypeToken{

static private TypeToken instanceValue = new TypeToken();

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

private TypeToken() { }}

這個(gè)類沒有成員,且每個(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à)值。

主站蜘蛛池模板: 精品一区二区久久久久网站| 伊人中文网| 黄片一区二区三区| 久久久久青草线综合超碰| 丁香婷婷激情网| 国产亚洲精品91| 全裸无码专区| 国产免费福利网站| 国产一在线| 国产一二三区在线| 免费一看一级毛片| 91成人免费观看| 亚洲一区二区无码视频| 蜜臀AVWWW国产天堂| 亚洲天堂777| 国产亚洲精品97在线观看| 欧美一级大片在线观看| 亚洲日韩精品欧美中文字幕| 色老头综合网| 亚洲一级毛片| 亚洲日韩高清在线亚洲专区| 日本午夜影院| 99久视频| 71pao成人国产永久免费视频| 国产网友愉拍精品| 天天综合色网| 亚洲精品第一页不卡| 天天色天天操综合网| 伊人天堂网| 99视频在线精品免费观看6| 最新亚洲人成无码网站欣赏网| 欧美在线一级片| 国产一区二区三区精品久久呦| 中国毛片网| 亚洲视频无码| 欧美另类图片视频无弹跳第一页| 国产精品第一区在线观看| 国产在线麻豆波多野结衣| 国产女人综合久久精品视| jizz国产在线| 爱爱影院18禁免费| 色噜噜综合网| 国产精品视频导航| 欧美成人综合视频| 色噜噜狠狠色综合网图区| 国产高清免费午夜在线视频| 特级毛片8级毛片免费观看| 看你懂的巨臀中文字幕一区二区 | 亚洲国产亚洲综合在线尤物| 她的性爱视频| 美女啪啪无遮挡| 久久一本精品久久久ー99| 国产一区二区三区免费观看| 老司机aⅴ在线精品导航| 中文毛片无遮挡播放免费| 国产福利在线免费观看| 久久久久亚洲AV成人网站软件| 91啪在线| 国产系列在线| 国产特级毛片| 亚洲成在线观看| 精品国产中文一级毛片在线看| 色妺妺在线视频喷水| 一区二区影院| 成人字幕网视频在线观看| 任我操在线视频| 欧美亚洲第一页| 成人在线观看一区| 色综合天天娱乐综合网| 污污网站在线观看| 热这里只有精品国产热门精品| 67194亚洲无码| 中文国产成人久久精品小说| 亚洲AV无码一区二区三区牲色| 亚洲aⅴ天堂| 精品久久久久久中文字幕女 | 午夜精品福利影院| 在线a视频免费观看| 狠狠亚洲五月天| 国产欧美日韩视频怡春院| 亚洲一级毛片免费看| 伦伦影院精品一区|