国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

設計模式--簡單工廠(Factory)模式

2019-11-17 01:55:54
字體:
來源:轉載
供稿:網友

設計模式--簡單工廠(Factory)模式

溫故而知新,看了以前寫的博文《asp.net讀取Excel文件 2》http://m.survivalescaperooms.com/insus/archive/2011/05/05/2037808.html覺得第一段代碼示例,可以使用設計模式的簡單工廠來實現。也就是說,使用兩個全新的類,替代兩個Switch分支。Xls類:Xlsx類:經這樣分離之后,Switch代碼,就可以寫成下面這樣子:

上面的高亮的方法是相同的,兩個類的方法相同,我們可以抽取至父類作為父類的public的方法,但是Insus.NET在開發時ASP.NET時,很少使用繼承,因為xxx.aspx.cs已經繼承了System.Web.UI.Page,如果再創建一個父類來繼承,是無法解的問題,因為一個類只能繼承一個父類。

因此,我們可以采用寫成接口或是抽象象類。類能繼承多個接口或是抽象類。

抽象類寫好了,因此兩個類Xls和Xlsx需要稍修改一下,實現上面的抽象類FileFormat:Xlsx相同的修改:

在Switch程序塊中,我們就可以改為:

上面高亮的代碼,就是我們平時所說的多態。修改到這里,我們還是讓前端寫的代碼太多,是不是可以寫一類,專處理用戶傳入的Excel類型,就能直接呼叫對應的類呢?這里Insus.NET就是想說,可以寫一個簡單工廠來。直接把Switch程序搬至工廠類去。xxx.aspx.cs直接呼叫即可,也算得上去封裝吧:

最終本篇最開頭的代碼示例,就可以使用這個簡單工廠去替代Switch方法塊:下面內容于2014-12-18 15:01分添加:簡單工廠有一個問題,就是當有新類別添加或是減少時,我們都得去修改FileFactory類。解決這個問題可以使用反射

下面內容于2014-12-19 14:03分添加:上面#34行代碼,還可以重構為:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兰考县| 涿鹿县| 白水县| 金湖县| 宝应县| 东莞市| 贵阳市| 博爱县| 崇义县| 余姚市| 饶阳县| 黑水县| 濉溪县| 丰台区| 江川县| 星子县| 平昌县| 公主岭市| 满洲里市| 石台县| 荆州市| 荣昌县| 神农架林区| 名山县| 玛多县| 甘洛县| 雷州市| 河源市| 林西县| 神木县| 庆云县| 马山县| 文安县| 永州市| 郑州市| 邹城市| 洛阳市| 顺义区| 云安县| 乌海市| 上思县|