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

        ?

        在數(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)合,最后給出開發(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ù)為中心開發(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)題在開發(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)一書中,他寫道:“每個(gè)模式都描述著一種在我們的環(huán)境中一遍又一遍地出現(xiàn)的問(wèn)題,并因此描述了對(duì)該問(wèn)題的核心解決方案。以此方式你可以使用該方案上百萬(wàn)次,而從不需要重復(fù)作同樣的事情?!?/p>

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

        在軟件開發(fā)中我們經(jīng)常會(huì)碰到一系列相關(guān)的對(duì)象需要?jiǎng)?chuàng)建,如果按照常規(guī)做法我們就要為不同的對(duì)象創(chuàng)建編寫不同的代碼,復(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框架下開發(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)開發(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]阿博泰克,北大青鳥信息技術(shù)有限公司編著,在NET框架下開發(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)估策略
        智慧圖書館環(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ì)模式
        婷婷色国产精品视频一区| 国产精品黄色片在线看| 东北少妇不戴套对白第一次| www射我里面在线观看| 大学生被内谢粉嫩无套| 亚洲日本无码一区二区在线观看| 日本高清人妻一区二区| 国语对白免费观看123 | 亚洲av无码无限在线观看| 黄色a级国产免费大片| 欧美刺激午夜性久久久久久久| 人妻色中文字幕免费视频| 东京热加勒比久久精品| 国产乱人偷精品人妻a片| 亚洲自偷自拍熟女另类| 国产欧美日韩图片一区二区| 亚洲精品中文字幕乱码三区99| 日本一区二区在线高清观看| 亚洲日韩国产欧美一区二区三区| 欧美人妻精品一区二区三区| 91热视频在线观看| 亚洲六月丁香色婷婷综合久久| 国产亚洲aⅴ在线电影| 国产女人高潮视频在线观看| 日韩欧美国产亚洲中文| 日本精品啪啪一区二区| 亚洲视频一区二区三区视频| 国产农村妇女精品一二区| 狠狠躁夜夜躁人人爽天天| 国产一区二区av男人| 人妻少妇中文字幕久久| 性高朝大尺度少妇大屁股| 国产无套露脸| 老师脱了内裤让我进去| 国产午夜无码精品免费看动漫| 国产一区二区三区特黄| 91九色免费视频网站| 中文亚洲欧美日韩无线码| 亚洲色图综合免费视频| 国产精品女丝袜白丝袜美腿| 精品亚洲成a人在线观看|