面向?qū)ο箝_(kāi)發(fā)一個(gè)最重要的思想就是對(duì)真實(shí)世界進(jìn)行模擬。
然而﹐在大量的使用面向?qū)ο笳Z(yǔ)言開(kāi)發(fā)的系統(tǒng)中﹐您卻很難看到這種模擬﹐而依然是些以數(shù)據(jù)庫(kù)為中心的增刪改查動(dòng)作﹐ " /> 最新国产在线,欧洲精品一区,欧美一区二区三区久久精品

中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

領(lǐng)域模型﹐打開(kāi)OO的另一扇窗

園子里這么多討論OO的﹐我也來(lái)湊一下熱鬧吧。

 
面向?qū)ο箝_(kāi)發(fā)一個(gè)最重要的思想就是對(duì)真實(shí)世界進(jìn)行模擬。

 
然而﹐在大量的使用面向?qū)ο笳Z(yǔ)言開(kāi)發(fā)的系統(tǒng)中﹐您卻很難看到這種模擬﹐而依然是些以數(shù)據(jù)庫(kù)為中心的增刪改查動(dòng)作﹐很少能看到
真實(shí)的世界的身影。

 
出現(xiàn)這種情況﹐很大程度上都是受數(shù)據(jù)庫(kù)為中心的影響。

 
以數(shù)據(jù)庫(kù)為中心開(kāi)發(fā)系統(tǒng)﹐有一套成熟的理論﹐也經(jīng)歷住了多年的考驗(yàn)﹐是到今天為止﹐大部分信息系統(tǒng)開(kāi)發(fā)時(shí)的不二選擇。

 
以一個(gè)圖書(shū)管理系統(tǒng)為例﹐有這樣的一些功能﹕新書(shū)上架﹐借閱﹐歸還。

 
按照數(shù)據(jù)庫(kù)方法﹐我們會(huì)設(shè)計(jì)出這樣的三個(gè)關(guān)系﹕

書(shū)籍(BookID,ISBN﹐書(shū)名﹐作者﹐出版社﹐內(nèi)容簡(jiǎn)介)

借書(shū)證(CardID﹐姓名﹐電話﹐身份證號(hào)﹐地址)

借閱(BookID,CardID,借閱時(shí)間,歸還時(shí)間,)

 
然后在數(shù)據(jù)庫(kù)中建表

 
接下來(lái)提供書(shū)籍新增﹐刪除﹐修改﹐查詢﹐借書(shū)證增刪改查﹐圖書(shū)借閱﹐歸還的人機(jī)界面

 
再圍繞數(shù)據(jù)庫(kù)編寫(xiě)增刪改查對(duì)象和方法
。大家爭(zhēng)論的Book.SaveBookManager.Save方法也是在此吧。其實(shí)只要不重復(fù)代碼﹐使用起來(lái)方便﹐高效﹐統(tǒng)一﹐無(wú)論將Save方法放在哪﹐都是有其道理的。

 
對(duì)于大部分信息系統(tǒng)﹐以數(shù)據(jù)庫(kù)為中心是十分合適的﹐這種方法也是非常高效且成熟。

 
然而﹐您還是可以嘗試另外一種方法

 
我們想象這樣的場(chǎng)景﹕

 
有一個(gè)
[圖書(shū)館]

[圖書(shū)館]里有很多[書(shū)架](可以理解為﹕書(shū)籍分類(lèi)目錄)

[書(shū)架]上有很多[書(shū)籍]

一個(gè)讀者進(jìn)入系統(tǒng)﹐系統(tǒng)幫助他瀏覽[圖書(shū)館][書(shū)架],然后在其中一個(gè)[書(shū)架]中找到了他想借閱的[書(shū)籍]﹐接下來(lái)﹐它將[借書(shū)證]交給管理員﹐要求借閱該[書(shū)籍]﹐管理員辦理借閱手續(xù)﹐產(chǎn)生一筆[借閱記錄]﹐完成借書(shū)過(guò)程

 
這個(gè)場(chǎng)景可以由下面這個(gè)對(duì)象完成

 
Class
圖書(shū)館幫助者

{

       

        PublicList<書(shū)架> 所有書(shū)架

{

                Return 圖書(shū)館.Instance.所有書(shū)架  

        }

 

        Public void 選擇書(shū)架(書(shū)架)

        {

                記錄當(dāng)前書(shū)架

}

 

Public void 選擇圖書(shū)(圖書(shū))

{

記錄所選圖書(shū)
}

 

        Public void 借閱(借書(shū)證)

        {

                If(借書(shū)證.借出記錄!=null)

                        ThrowException “該書(shū)已借出”;

                New 借閱記錄();

                借閱記錄.Book= 當(dāng)前圖書(shū)

                借閱記錄.Card= 借書(shū)證

                借閱記錄.時(shí)間 =Now

                當(dāng)前圖書(shū).借出記錄 =借閱記錄

                借書(shū)證的借閱記錄.Add(借閱記錄)

}

}

 

這就是借書(shū)的用例實(shí)現(xiàn)﹐而這些對(duì)象則是系統(tǒng)領(lǐng)域模型中的對(duì)象。

沒(méi)有數(shù)據(jù)庫(kù)﹐沒(méi)有UI﹐只有業(yè)務(wù)以及邏輯。

 

當(dāng)您開(kāi)發(fā)人機(jī)界面時(shí)﹐您可以選擇windows﹐也可以選擇web﹐它使用這個(gè)類(lèi) (顯示書(shū)架﹐選擇一個(gè)書(shū)籍﹐顯示書(shū)架中的書(shū)籍﹐選擇一本書(shū)﹐借閱按鈕)完成了借閱功能

 

自始至終﹐我們的設(shè)計(jì)中均未出現(xiàn)數(shù)據(jù)庫(kù)

 

我們的系統(tǒng)做為一個(gè)真實(shí)世界的模型﹐已經(jīng)足夠.上架時(shí)﹐只要new 書(shū)籍﹐加入書(shū)架就可以﹐辦理借書(shū)證﹐也只需要new借書(shū)證,同樣﹐歸還書(shū)籍時(shí)﹐只要將借出記錄與書(shū)籍的關(guān)聯(lián)取消即可﹐一切良好。

 

然而這種理想的環(huán)境是不存在的﹐這樣我們才有了對(duì)象持久化的概念﹐數(shù)據(jù)庫(kù)作為一個(gè)穩(wěn)定﹐高效的持久方案﹐就是不錯(cuò)的選擇(我以前也試過(guò)將所有對(duì)象以二進(jìn)制文件形式間隔備份到硬盤(pán)上的方法完成持久)。

 

至于系統(tǒng)中的對(duì)象與數(shù)據(jù)庫(kù)的表格如何轉(zhuǎn)換﹐ORM就開(kāi)始派上用場(chǎng)了。

然而請(qǐng)記住一條﹐在使用數(shù)據(jù)庫(kù)存對(duì)象時(shí)﹐請(qǐng)千萬(wàn)不要和領(lǐng)域模型耦合在一起了(不要在借閱方法中﹐來(lái)一句Book.Insert代碼﹐我們的領(lǐng)域?qū)ο笾皇腔ハ嘀g有關(guān)系﹐而和數(shù)據(jù)庫(kù)是沒(méi)關(guān)系的﹐我們的數(shù)據(jù)庫(kù)保存的是當(dāng)前系統(tǒng)中的對(duì)象及其狀態(tài))﹐設(shè)計(jì)模式呀﹐AOP呀﹐這時(shí)候是他們大顯身手的時(shí)候了

 

(順便說(shuō)一句﹕一直以來(lái)﹐我認(rèn)為以數(shù)據(jù)庫(kù)為中心而又采用ORM的系統(tǒng)設(shè)計(jì)方案可以說(shuō)非常憋屈的﹐好好得實(shí)現(xiàn)您的增刪改查﹐下SQL﹐連數(shù)據(jù)庫(kù)不就行了﹐硬是插一腳O/RMapping﹐讓十分強(qiáng)大的SQL,變成笨手笨腳的對(duì)象方法﹐不難受才怪。)

 

其實(shí),微軟在NET框架中提供的以數(shù)據(jù)庫(kù)為中心的類(lèi)別和工具都已十分強(qiáng)大了﹐像ADO.NET,DataSet﹐類(lèi)型化的DataAdapter自動(dòng)生成﹐以及前端的GridView控件都適合于開(kāi)發(fā)信息系統(tǒng)﹐大部分簡(jiǎn)單的系統(tǒng)我都會(huì)直接使用﹐但是﹐當(dāng)C#為你提供的如此完美的一個(gè)面向?qū)ο笳Z(yǔ)言﹐您又怎么能不嘗試一下真正的面向?qū)ο箝_(kāi)發(fā)呢?

it知識(shí)庫(kù)領(lǐng)域模型﹐打開(kāi)OO的另一扇窗,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 不卡一区二区三区四区 | 中文字幕日韩欧美一区二区三区 | 一本在线| 免费成人在线网 | 亚洲电影在线播放 | 国产玖玖 | 久久久久久国产精品 | av黄色网 | 中文字幕国产一区 | 欧美中文一区 | 一区二区在线 | 精品国产视频在线观看 | 青青草免费在线视频 | 国产精品九九九 | 日韩欧美国产一区二区 | 国产成年人视频 | 影音先锋久久 | 日本精品一区二区三区视频 | 亚洲免费影院 | 在线免费观看日本视频 | 日韩精品在线免费观看 | 亚洲日本一区二区 | 黄色片大全在线观看 | 欧美亚洲视频 | 久热m3u8 | 97视频网站 | 午夜精品久久久久久不卡欧美一级 | 亚洲精品一区av在线播放 | 国产福利资源在线 | 欧美激情精品久久久久久 | 精品日韩一区二区 | 在线观看视频一区 | 亚洲精品一区二区三区蜜桃久 | 男女在线免费观看 | 久久精品免费观看 | 精品国产欧美一区二区 | 国产在线观看一区二区 | 在线观看视频91 | 色婷婷狠狠 | 亚洲自拍偷拍免费视频 | 91精品久久久久久久久 |