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

        ?

        設(shè)計模式在管理信息系統(tǒng)開發(fā)中的應(yīng)用研究

        2010-11-27 02:15:04宋娜娜
        關(guān)鍵詞:設(shè)計模式面向?qū)ο?/a>子系統(tǒng)

        宋娜娜

        (鄭州航空工業(yè)管理學(xué)院 信息科學(xué)學(xué)院,河南 鄭州 450015)

        管理信息系統(tǒng)(Management Information System,MIS)是一個建立在網(wǎng)絡(luò)環(huán)境下的綜合信息管理系統(tǒng),通過計算機網(wǎng)絡(luò),可實現(xiàn)企業(yè)不同部門之間數(shù)據(jù)的流通和共享,使得決策部門能及時得到需要的數(shù)據(jù),并將決策信息反饋給各部門.管理信息系統(tǒng)的開發(fā),無論是使用流行的第4代編程語言開發(fā),還是基于Web的應(yīng)用程序,人們常采用3層(表示層、業(yè)務(wù)層和持久層)體系結(jié)構(gòu),其中,對數(shù)據(jù)庫的使用是必不可少的.如何方便地實現(xiàn)數(shù)據(jù)庫的訪問是管理信息系統(tǒng)開發(fā)過程中需要重點考慮的部分.

        隨著面向?qū)ο蠹夹g(shù)的成熟,在各種軟件開發(fā)環(huán)境中都提供了對數(shù)據(jù)庫訪問的支持,一般是通過一組類來實現(xiàn)的,在這些類之間存在著復(fù)雜的相互依賴關(guān)系.在面向?qū)ο蟮脑O(shè)計中,最困難的是尋找合適的對象來構(gòu)造軟件系統(tǒng),從而設(shè)計出理想的類,由于要考慮多種因素諸如封裝、粒度以及靈活性,而這些因素往往是沖突的,所以如何進行權(quán)衡取舍找到一個合理的方案是相當(dāng)困難的.

        在軟件設(shè)計工作中,當(dāng)找到對于某類問題好的解決方案時,一般會從中抽象出模型并反復(fù)使用,這有助于我們將新的設(shè)計建立在以往工作的基礎(chǔ)上并復(fù)用以往成功的設(shè)計方案,使得面向?qū)ο蟮脑O(shè)計更靈活和更具復(fù)用性.目前,面向?qū)ο蠹夹g(shù)的研究人員正在嘗試使用設(shè)計模式這一概念.所謂設(shè)計模式,就是將這些面向?qū)ο蟮脑O(shè)計經(jīng)驗按模式名稱、問題、解決方案和效果這4個基本要素系統(tǒng)地歸類以便重用,從而構(gòu)成不同設(shè)計之間通信的基礎(chǔ).它是一種可重用的“財富”,可以應(yīng)用于不同的問題域.本文使用面向?qū)ο箝_發(fā)技術(shù),應(yīng)用設(shè)計模式,提出了一個在.NET開發(fā)環(huán)境中數(shù)據(jù)庫訪問的解決方案.

        1 設(shè)計模式

        1.1 設(shè)計模式簡介

        設(shè)計模式的思想最初來源于建筑領(lǐng)域,建筑師 Christopher Alexander 首先提出了設(shè)計模式的概念,盡管他描述的是建筑和規(guī)劃中的設(shè)計模式,但其中體現(xiàn)的思想也適用于建筑設(shè)計以外的一些領(lǐng)域,例如面向?qū)ο筌浖O(shè)計領(lǐng)域.只是在這里,對象和接口取代了墻和門窗,但模式的核心都是一樣的,即在某種環(huán)境下解決特定問題的通用方法[1].

        設(shè)計模式關(guān)注的是特定設(shè)計問題及其解決方案,在每種模式中均描述一個設(shè)計問題和一個經(jīng)過驗證的、通用的解決方案,這個解決方案是對反復(fù)出現(xiàn)的設(shè)計結(jié)構(gòu)進行識別和抽象得到的,它通常由多個對象組成,模式中不僅描述對象的設(shè)計,而且描述對象間的通信.同時,在每種模式中還包括該模式的適用環(huán)境、使用效果和利弊的權(quán)衡以及該模式是否與其他模式有關(guān)等內(nèi)容.

        設(shè)計模式的基本描述格式通常包括:

        (1)模式的名稱;

        (2)模式要解決的問題及模式所適用的環(huán)境;

        (3)一個通用的解決方案,包括模式中的組件、組件間的交互以及它們的職責(zé)、關(guān)系和協(xié)作;

        (4)使用這種解決方案會產(chǎn)生的效果.

        依據(jù)目的不同,模式可分為創(chuàng)建型模式、結(jié)構(gòu)型模式和行為模式3類.創(chuàng)建型模式與對象的創(chuàng)建有關(guān);結(jié)構(gòu)型模式處理類和對象的組合,將一組對象組合成一個大的結(jié)構(gòu),例如復(fù)雜的用戶界面;行為模式描述類或?qū)ο蟮慕换ズ吐氊?zé)分配,定義對象間的通信和復(fù)雜程序中的控制流.

        1.2 Facade模式簡介

        Facade模式要求一個子系統(tǒng)的外部與其內(nèi)部的通信必須通過一個統(tǒng)一的門面(Facade)對象進行.Facade模式提供了一個高層次的接口,使得子系統(tǒng)更易于使用.Facade模式的門面類將客戶端與子系統(tǒng)的內(nèi)部復(fù)雜性分隔開,使得客戶端只需要與門面對象打交道,而不需要與子系統(tǒng)內(nèi)部的很多對象打交道[2].

        (1)意圖

        為子系統(tǒng)中的一組接口提供一致的界面,F(xiàn)acade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用.

        (2)適用性

        為一個復(fù)雜子系統(tǒng)提供一個簡單接口時,可以使用Facade模式.

        子系統(tǒng)往往因為不斷演化而變得越來越復(fù)雜.大多數(shù)模式使用時都會產(chǎn)生更多更小的類,這使得子系統(tǒng)更具可重用性,也更容易對子系統(tǒng)進行定制,但這也給那些不需要定制子系統(tǒng)的用戶帶來一些使用上的困難.Facade可以提供一個簡單的缺省視圖,這一視圖對大多數(shù)用戶來說已經(jīng)足夠,而那些需要更多的可定制性的用戶可以越過Facade層.

        客戶程序與抽象類的實現(xiàn)部分之間存在著很大的依賴性.引入Facade將這個子系統(tǒng)與客戶以及其他的子系統(tǒng)分離,可以提高子系統(tǒng)的獨立性和可移植性.

        當(dāng)需要構(gòu)建一個層次結(jié)構(gòu)的子系統(tǒng)時,使用Facade模式定義子系統(tǒng)中每層的入口點.如果子系統(tǒng)之間是相互依賴的,可以讓它們僅通過Facade進行通訊,從而簡化了它們之間的依賴關(guān)系.

        (3)結(jié)構(gòu)圖

        圖1 Facade模式的通用結(jié)構(gòu)圖Fig.1 General structure of Facade pattern

        2 設(shè)計模式在MIS開發(fā)中數(shù)據(jù)庫設(shè)計中的應(yīng)用

        現(xiàn)在有多種流行的數(shù)據(jù)庫,包括Microsoft公司的Access、Foxpro、SQL Server,IBM公司的DB/2、Oracle、Sybase等.這些數(shù)據(jù)庫都支持SQL語言,所以似乎應(yīng)該是可以互換使用的,但是由于這些數(shù)據(jù)庫系統(tǒng)都有各自的用戶接口和編程接口以及不同的特點,盡管它們都支持SQL,但每個數(shù)據(jù)庫系統(tǒng)都有自己的接受SQL查詢和返回查詢結(jié)果的方法,所以這些系統(tǒng)不能互換使用.

        為了解決這個問題,在.NET平臺上提供了一個新的數(shù)據(jù)庫訪問模型ADO.NET,它由一組互相聯(lián)系類組成[3]:

        (1)OleDbConnection——代表了實際到數(shù)據(jù)庫的連接,實際編程時可以實例化該類的一個對象,在需要時打開和關(guān)閉該對象,在使用完成后關(guān)閉它以便垃圾回收.

        (2)OleDbCommand——代表發(fā)送給數(shù)據(jù)庫的一個SQL命令,該命令可能不返回結(jié)果.

        (3)OleDbDataAdapter——在數(shù)據(jù)庫和本地數(shù)據(jù)集之間的數(shù)據(jù)交互提供一個橋梁,可以指定OleDbCommand、數(shù)據(jù)集和數(shù)據(jù)連接.

        (4)DataSet——代表一個或多個數(shù)據(jù)表或查詢返回結(jié)果.

        (5)DataTable——代表數(shù)據(jù)庫中的一個數(shù)據(jù)表或從查詢返回的表.

        (6)DataRow——代表DataTable中的一行.

        這些類相互之間是緊密聯(lián)系的,使用以上這組類進行數(shù)據(jù)庫訪問的一般方式如下:

        a、首先創(chuàng)建一個數(shù)據(jù)庫鏈路;

        b、請求一個記錄集合;

        c、把記錄集合暫存到DataSet;

        d、如果需要,返回第2步(DataSet可以容納多個數(shù)據(jù)集合);

        e、關(guān)閉數(shù)據(jù)庫鏈路;

        f、在DataSet上作所需要的操作.

        對數(shù)據(jù)庫的訪問需要這些類配合完成,直接使用這些類來完成數(shù)據(jù)庫訪問的任務(wù),類之間的關(guān)系復(fù)雜,使用起來不易掌握.Facade模式是管理這些類對象的理想方法.Facade模式由兩個類組成:Dbase和DBTable,其中Dbase包裝了ADOConnection、Database、DataTable、ADOCommand、ADODatasetCommand類,DBTable包裝了ADOCommand、Dataset、Datarow、Datatable、ADODatasetCommand類.具體實現(xiàn)如下:

        public abstract class DBase {

        protected OleDbConnection conn;

        private void openConnection() {

        if (conn.State == ConnectionState.Closed){

        conn.Open ();

        }

        }

        private void closeConnection() {

        if (conn.State == ConnectionState.Open ){

        conn.Close ();

        }

        }

        public DataTable openTable (string tableName) {

        OleDbDataAdapter adapter = new OleDbDataAdapter ();

        DataTable dtable = null;

        string query = "Select * from " + tableName;

        adapter.SelectCommand = new OleDbCommand (query, conn);

        DataSet dset = new DataSet ("mydata");

        try {

        openConnection();

        adapter.Fill (dset);

        dtable = dset.Tables [0];

        }

        catch(Exception e) {

        Console.WriteLine (e.Message );

        }

        return dtable;

        }

        public DataTable openQuery(string query) {

        OleDbDataAdapter dsCmd = new OleDbDataAdapter ();

        DataSet dset = new DataSet ();

        DataTable dtable = null;

        try {

        dsCmd.SelectCommand = new OleDbCommand(query, conn);

        openConnection();

        dsCmd.Fill(dset, "mine");

        dtable = dset.Tables[0];

        closeConnection();

        return dtable;

        }

        catch (Exception e) {

        Console.WriteLine (e.Message);

        return null;

        }

        }

        public void openConnection(string connectionString) {

        conn = new OleDbConnection(connectionString);

        }

        public OleDbConnection getConnection() {

        return conn;

        }

        }

        類DBTable只給出粗略的定義:

        public class DBTable {

        protected DBase db;

        protected string tableName;

        private bool filled, opened;

        private DataTable dtable;

        private int rowIndex;

        private Hashtable names;

        private string columnName;

        private DataRow row;

        private OleDbConnection conn;

        private int index;

        public DBTable(DBase datab, string tb_Name) {//-----}

        public void createTable() {//-----}

        public bool hasMoreElements() {//-----}

        public int getKey(string nm, string keyname){//-----}

        public virtual void makeTable(string cName) {//-----}

        private void closeConn() {//-----}

        private void openConn() {//-----}

        public void openTable() {//-----}

        public void delete() {//-----}

        }

        在實際應(yīng)用開發(fā)中,可使用從這兩個類派生的子類并加以實例化.Facade模式為客戶提供了一個簡單的編程接口,客戶不需使用復(fù)雜的數(shù)據(jù)庫訪問子系統(tǒng)部件.而且,使用Facade模式并不阻止客戶使用底層的復(fù)雜的子系統(tǒng)部件,還可以更改底層的子系統(tǒng)而不更改客戶代碼.

        3 結(jié)束語

        在當(dāng)前的軟件開發(fā)中,良好的軟件設(shè)計方法能夠大幅度提升軟件設(shè)計的質(zhì)量和效率.以往,只有具有豐富軟件設(shè)計經(jīng)驗的設(shè)計職員才能設(shè)計出結(jié)構(gòu)均衡、質(zhì)量保證的軟件;現(xiàn)在,應(yīng)用軟件設(shè)計模式方法能夠很好地重用優(yōu)秀的軟件設(shè)計方案,進而得到良好的設(shè)計結(jié)果.本文介紹了設(shè)計模式的一般特點,并詳細(xì)分析了Facade模式.在此基礎(chǔ)上,提出了一個使用Facade模式的數(shù)據(jù)庫訪問模型,并給出了實際的實現(xiàn).該模型應(yīng)用在實際MIS開發(fā)過程中,可以使開發(fā)人員避免使用以往的復(fù)雜的數(shù)據(jù)庫訪問技術(shù),從而大大提高開發(fā)效率.

        參考文獻(xiàn):

        [1] 鄒娟,田玉敏. 軟件設(shè)計模式的選擇與實現(xiàn)[J] .計算機工程,2004(10) : 29-31.

        [2] ERICH G, RICHARD H, RALPH J, et al. 設(shè)計模式——可復(fù)用面向?qū)ο筌浖幕A(chǔ):英文版[M].北京:機械工業(yè)出版社,2002:121-127.

        [3] TOM A. C#技術(shù)內(nèi)幕[M].侯曉霞,柴洪輝,譯.北京:清華大學(xué)出版社,2002:290-305.

        猜你喜歡
        設(shè)計模式面向?qū)ο?/a>子系統(tǒng)
        仿生設(shè)計模式的創(chuàng)新應(yīng)用探索
        玩具世界(2023年6期)2024-01-29 12:14:36
        不對中轉(zhuǎn)子系統(tǒng)耦合動力學(xué)特性研究
        “1+1”作業(yè)設(shè)計模式的實踐探索
        GSM-R基站子系統(tǒng)同步方案研究
        駝峰測長設(shè)備在線監(jiān)測子系統(tǒng)的設(shè)計與應(yīng)用
        交通機電工程設(shè)計模式創(chuàng)新探討
        面向?qū)ο蟮挠嬎銠C網(wǎng)絡(luò)設(shè)計軟件系統(tǒng)的開發(fā)
        電子測試(2018年15期)2018-09-26 06:01:34
        面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
        面向?qū)ο骔eb開發(fā)編程語言的的評估方法
        車載ATP子系統(tǒng)緊急制動限制速度計算
        久久只精品99品免费久23| 亚洲一区sm无码| 国产艳妇av在线出轨| 精品国产97av一区二区三区| 免费人成在线观看播放视频| 男女啪啪视频高清视频| 国产精品美女一区二区视频 | 久久精品熟女不卡av高清| 男女在线免费视频网站| 中文字幕综合一区二区三区| 久久久99精品成人片| 久久久精品一区aaa片| 精品无码久久久久久久动漫| 欧美三级超在线视频| 日韩精品极品视频在线观看蜜桃| 精品国产色哟av一区二区三区| 色与欲影视天天看综合网| 大肉大捧一进一出视频| 欧洲-级毛片内射| 色www亚洲| 成年男女免费视频网站点播| 色偷偷色噜噜狠狠网站30根| 国产超碰人人模人人爽人人喊| 欧美一级视频精品观看| 日本一区二区三级免费| 国产极品女主播国产区| 国产精品无码久久久久| 久久网视频中文字幕综合| 91精品在线免费| 国产精品亚洲一区二区三区久久| 久久久亚洲熟妇熟女av| 欧美精品国产综合久久| 国产精品成人国产乱| 久久综合成人网| 五码人妻少妇久久五码| 中文字幕av素人专区| 门卫又粗又大又长好爽| 国产精自产拍久久久久久蜜| 婷婷色综合成人成人网小说| 97中文乱码字幕在线| 国产av国片精品有毛|