• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    在數(shù)據(jù)訪問(wèn)層使用抽象工廠設(shè)計(jì)模式的C#實(shí)現(xiàn)

    2009-07-16 09:33:54唐文芳
    新媒體研究 2009年8期
    關(guān)鍵詞:設(shè)計(jì)模式

    唐文芳

    [摘要]簡(jiǎn)單介紹設(shè)計(jì)模式的概念,探討屬于創(chuàng)建型模式的抽象工廠設(shè)計(jì)模式的概念及運(yùn)用場(chǎng)合,最后給出開(kāi)發(fā)三層結(jié)構(gòu)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),數(shù)據(jù)訪問(wèn)層使用抽象工廠設(shè)計(jì)模式的C#實(shí)例。

    [關(guān)鍵詞]設(shè)計(jì)模式 抽象工廠設(shè)計(jì)模式 三層結(jié)構(gòu)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng) C#

    中圖分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)0420030-01

    以數(shù)據(jù)為中心開(kāi)發(fā)的應(yīng)系統(tǒng),都涉及到訪問(wèn)數(shù)據(jù)庫(kù)問(wèn)題,還有可能要求能夠訪問(wèn)不同的數(shù)據(jù)庫(kù),那在三層結(jié)構(gòu)下數(shù)據(jù)訪問(wèn)層實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)如何滿足客戶要求,本文探討了使用抽象工廠設(shè)計(jì)模式的C#*實(shí)現(xiàn)。

    一、設(shè)計(jì)模式定義、來(lái)歷

    類似的一些問(wèn)題在開(kāi)發(fā)中經(jīng)常遇到,經(jīng)過(guò)前人的整理得出的一些好的解決方案,面向?qū)ο笤O(shè)計(jì)模式就是為了實(shí)現(xiàn)面向?qū)ο蟮囊恍┰瓌t的。那么我們可以得到設(shè)計(jì)模式的定義:設(shè)計(jì)模式就是重復(fù)問(wèn)題的一些好的解決方案。

    設(shè)計(jì)模式起源于建筑,首先由建筑設(shè)計(jì)師亞歷山大提出的,然后經(jīng)過(guò)前人推廣到軟件設(shè)計(jì)行業(yè)來(lái)。在他的那本著名“模式語(yǔ)言”(A Pattern Language)一書(shū)中,他寫(xiě)道:“每個(gè)模式都描述著一種在我們的環(huán)境中一遍又一遍地出現(xiàn)的問(wèn)題,并因此描述了對(duì)該問(wèn)題的核心解決方案。以此方式你可以使用該方案上百萬(wàn)次,而從不需要重復(fù)作同樣的事情。”

    軟件行業(yè)最早出現(xiàn)的設(shè)計(jì)模式著作是GOF(Gang Of Fours)四人組所著的那本《設(shè)計(jì)模式-可復(fù)用面向?qū)ο筌浖A(chǔ)》,這本書(shū)將設(shè)計(jì)模式分為三大類:

    1.創(chuàng)建型模式:創(chuàng)建型模式是關(guān)注對(duì)象的創(chuàng)建實(shí)例化的。它將對(duì)象的創(chuàng)建與對(duì)象的實(shí)現(xiàn)、描繪相分離。

    2.結(jié)構(gòu)型模式:結(jié)構(gòu)型模式關(guān)注復(fù)雜對(duì)象的構(gòu)建。將小粒度的對(duì)象組合成大的對(duì)象。

    3.行為型模式:行為型模式關(guān)注對(duì)象的職責(zé)以及他們之間如何通信的問(wèn)題。

    抽象工廠設(shè)計(jì)模式屬于對(duì)象創(chuàng)建型模式。

    二、抽象工廠設(shè)計(jì)模式的使用場(chǎng)景以及特點(diǎn)

    在軟件開(kāi)發(fā)中我們經(jīng)常會(huì)碰到一系列相關(guān)的對(duì)象需要?jiǎng)?chuàng)建,如果按照常規(guī)做法我們就要為不同的對(duì)象創(chuàng)建編寫(xiě)不同的代碼,復(fù)用性和可維護(hù)性都降低了。而且這些相關(guān)對(duì)象創(chuàng)建的方式也許不同,那么客戶代碼創(chuàng)建的時(shí)候就要針對(duì)不同的對(duì)象編碼,對(duì)象創(chuàng)建的方式還是一個(gè)容易改變的地方?;谶@樣的情況提出了抽象工廠模式,抽象工廠模式為創(chuàng)建一系列相關(guān)對(duì)象提供了統(tǒng)一的接口,客戶只要調(diào)用這個(gè)接口即可,封裝了變化,隔離了變化,讓客戶代碼穩(wěn)定起來(lái)。

    何抽象工廠都包含以下四大部分:

    1.抽象工廠:為創(chuàng)建對(duì)象提供一般接口。

    2.具體工廠:抽象工廠的實(shí)現(xiàn)。

    3.抽象產(chǎn)品:定義了被創(chuàng)建對(duì)象的一般接口。

    4.具體產(chǎn)品:抽象產(chǎn)品的實(shí)現(xiàn),即實(shí)際對(duì)象。

    抽象工廠設(shè)計(jì)模式:多個(gè)抽象產(chǎn)品類,每個(gè)抽象產(chǎn)品類可以派生出多個(gè)具體產(chǎn)品類。

    一個(gè)抽象工廠類,可以派生出多個(gè)具體工廠類。

    每個(gè)具體工廠類可以創(chuàng)建多個(gè)具體產(chǎn)品類的實(shí)例。

    抽象工廠既可以實(shí)現(xiàn)自抽象基類,也可以實(shí)現(xiàn)自接口。接口一般是保持基礎(chǔ)代碼既具有一定的結(jié)構(gòu),又具有一定的靈活性。但是,有時(shí)候我們不希望受到由接口定義的框架的束縛,而轉(zhuǎn)向抽象基類。

    三、在數(shù)據(jù)訪問(wèn)層使用抽象工廠模式

    在.NET框架下開(kāi)發(fā)三層結(jié)構(gòu)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),三層指的是:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層。在數(shù)據(jù)訪問(wèn)層實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),當(dāng)應(yīng)用系統(tǒng)需要訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的時(shí)候,我們可以采用抽象工廠模式實(shí)現(xiàn)具體訪問(wèn)哪個(gè)數(shù)據(jù)庫(kù),而不需要修改數(shù)據(jù)層代碼。具體實(shí)現(xiàn)的結(jié)構(gòu)如圖1示:

    從圖中我們可以看到,客戶只知道有抽象工廠和抽象產(chǎn)品。通過(guò)抽象工廠選擇創(chuàng)建的實(shí)體工廠,我們可以通過(guò)修改配置文件的屬性值,傳遞信息選擇創(chuàng)建的實(shí)體工廠,在實(shí)體工廠創(chuàng)建抽象產(chǎn)品的實(shí)體產(chǎn)品對(duì)象。具體實(shí)現(xiàn)部分代碼如下:

    public abstract class ChoiceFactory// 實(shí)現(xiàn)抽象工廠

    {public static Demo.AbstractFactory.ChoiceFactory Choicefactory()

    {//獲取配置文件的屬性值

    string key = System.Configuration.ConfigurationManager.AppSe

    ttings["DAL"];

    //判斷創(chuàng)建哪個(gè)實(shí)體工廠

    switch(key) {case "SQL":return new SqlFactory();

    case "Access":return new AccessFactory();

    default: return null; }}

    public abstract Demo.IDAl.IUserDAL CreateUserId();//抽象方法}

    public class SqlFactory : ChoiceFactory // 實(shí)現(xiàn)SQL Server實(shí)體工廠

    { public override Demo.IDAl.IUserDAL CreateUserId()

    { return new Demo.DAl.UserDAL();}}

    public class AccessFactory : ChoiceFactory //實(shí)現(xiàn) Access實(shí)體工廠

    { public override Demo.IDAl.IUserDAL CreateUserId()

    { return new Access.DAL.UserDAL();}}

    public interface IUserDAL// 管理員抽象產(chǎn)品

    { bool LoginCheck(string strName, string strPwd);}

    public class UserDAL:IUserDAL // SQL Server管理員實(shí)體產(chǎn)品

    { public bool LoginCheck(string strName, string strPwd)

    { string strSQL = "usp_ISAdminUser";

    SqlParameter[] parm = new SqlParameter[]

    {new SqlParameter("@loginId",strName),

    new SqlParameter("@loginPwd",strPwd),

    new SqlParameter("@return",0)};

    parm[2].Direction = ParameterDirection.ReturnValue;

    return DBHelper.ExecuteQuery(strSQL, parm); }}

    抽象工廠實(shí)現(xiàn)采用的是實(shí)現(xiàn)自抽象基類,實(shí)體工廠繼承基類和抽象方法。抽象產(chǎn)品實(shí)現(xiàn)采用接口,實(shí)體產(chǎn)品類實(shí)現(xiàn)抽象產(chǎn)品接口。根據(jù)配置屬性的值,在抽象工廠里創(chuàng)建的是SQL Server實(shí)體工廠,從上面的代碼看,那創(chuàng)建的實(shí)體產(chǎn)品就是SQL Server管理員實(shí)體產(chǎn)品。

    四、結(jié)束語(yǔ)

    采用三層結(jié)構(gòu)開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),能有效降低建設(shè)和維護(hù)成本,簡(jiǎn)化管理,可適應(yīng)不斷的變化和新的業(yè)務(wù)需求,能有效提高系統(tǒng)安全性等多個(gè)優(yōu)點(diǎn),在數(shù)據(jù)庫(kù)訪問(wèn)層采用抽象工廠設(shè)計(jì)模式,可以實(shí)現(xiàn)方便地訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù)。

    參考文獻(xiàn):

    [1](美)麥斯科著,顏炯譯,C#設(shè)計(jì)模式,中國(guó)電力出版社,2005.7.1.

    [2](美)Glenn Johnson,ADO.NET 2.0高級(jí)編程,清華大學(xué)出版社,2006.5.

    [3]阿博泰克,北大青鳥(niǎo)信息技術(shù)有限公司編著,在NET框架下開(kāi)發(fā)三層結(jié)構(gòu)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),科學(xué)技術(shù)文獻(xiàn)出版社,2008.1.

    猜你喜歡
    設(shè)計(jì)模式
    仿生設(shè)計(jì)模式的創(chuàng)新應(yīng)用探索
    玩具世界(2023年6期)2024-01-29 12:14:36
    設(shè)計(jì)模式識(shí)別的特征信息分類研究
    “1+1”作業(yè)設(shè)計(jì)模式的實(shí)踐探索
    基于能力目標(biāo)培養(yǎng)的藥學(xué)專業(yè)課程整體教學(xué)設(shè)計(jì)模式研究
    云南化工(2021年9期)2021-12-21 07:44:16
    引入線索約束的設(shè)計(jì)模式變體挖掘研究*
    設(shè)計(jì)模式挖掘的有效性評(píng)估策略
    智慧圖書(shū)館環(huán)境下的融貫式服務(wù)設(shè)計(jì)模式研究
    三維協(xié)同設(shè)計(jì)模式下的航天項(xiàng)目管理實(shí)踐與展望
    交通機(jī)電工程設(shè)計(jì)模式創(chuàng)新探討
    基于“雙師制”指導(dǎo)下的工業(yè)設(shè)計(jì)專業(yè)畢業(yè)設(shè)計(jì)模式
    错那县| 剑阁县| 红原县| 厦门市| 龙泉市| 江永县| 奉新县| 镶黄旗| 孝昌县| 云林县| 绵阳市| 应城市| 泽库县| 淄博市| 台中县| 栾城县| 甘孜| 红河县| 南丰县| 泗水县| 汶上县| 平远县| 墨玉县| 封丘县| 和平县| 竹溪县| 江口县| 松潘县| 蒙山县| 城固县| 哈尔滨市| 宣恩县| 巴东县| 依兰县| 三明市| 泉州市| 广元市| 贡嘎县| 黔南| 綦江县| 洛浦县|