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

首頁 > 開發 > 綜合 > 正文

C#設計模式之抽象工廠(AbstractFactory)

2024-07-21 02:18:10
字體:
來源:轉載
供稿:網友
1. 為什么要用抽象工廠?用抽象工廠的好處

這里我暫時還想不出有什么好處

我覺得就是利用接口來實現封裝其子類,讓具體的工作交給它的子類去做。所以說這應該不能算抽象工廠的優點,只能算作接口的優點。





2. 在c#中怎樣用抽象工廠?

好,我們來看一下怎么來實現

比如說我們要寫一個連接數據庫的組件,既支持sqlserver的,又要支持oledb的,這時我們就可以用abstractfactory設計模式了。

先定義一個接口:

public interface idbhelper



{



void executenonquery();







dataset executefordataset(string sql);



}



然后定義兩個類(一個是sqlserver的,一個是oledb的)來繼承idbhelper這個接口:

internal class sqldbhelper:idbhelper



{



public sqldbhelper()



{



}



public void executenonquery()



{



}







public dataset executefordataset(string sql)



{



//這里實現sqlserver的方法



return null;



}



}







internal class oledbhelper:idbhelper



{



public oledbhelper()



{



}



public void executenonquery()



{



}







public dataset executefordataset(string sql)



{



//這里實現oledb的方法



return null;



}



}

然后,來定義一個工廠類:

public class dbhelperfactory



{



public static idbhelper createdbhelper(int dbtype)



{



switch(dbtype)



{



case 1:



return new sqldbhelper();



case 2:



return new oledbhelper();



default:



return null;



}



}



}



最后我們來調用這個工廠類:

public class abstractfactorytest



{



public void testmethod()



{



idbhelper sqldb=dbhelperfactory.createdbhelper(1);



sqldb.executenonquery();



}



}



這個時候我們就可以很方便的調用數據庫組件了,在調用createdbhelper方法時,傳入參數為1,那么就是調用sqldbhelper這個類,傳入參數為2,那么就是調用oledbhelper這個類。當然傳入的參數你還可以把它變為枚舉型,這樣就更加方便了。



這樣的寫法也更利于擴展,比如說以后要添加一個oracledbhelper時,你只需要再添加一個類,改動一個方法(createdbhelper)就可以了。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴东县| 梁河县| 平陆县| 册亨县| 宣威市| 岢岚县| 民和| 昌平区| 辽阳市| 健康| 崇仁县| 监利县| 丹巴县| 磐石市| 高阳县| 广宗县| 巴林左旗| 雅江县| 大丰市| 丹凤县| 龙州县| 中西区| 闽侯县| 岳普湖县| 泰和县| 柳州市| 安宁市| 杭锦后旗| 兴化市| 丰顺县| 梁平县| 阿拉尔市| 合肥市| 康乐县| 洞口县| 海宁市| 虹口区| 彭泽县| 东光县| 阜康市| 白山市|