日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

博客園 - 企業(yè)設(shè)計模式讀書筆記 Domain Model

 liuqg 2006-03-10

Domain Model:
 

特點:

有一系列的實體對象,每個對象不只包含數(shù)據(jù)更重要的包含各自的行為責(zé)任。每個對象只做自己的事情,多個對象通過協(xié)作共同完成一件事情??梢猿浞职l(fā)揮面向?qū)ο蠛湍J降淖饔谩?/span> 很符合面向?qū)ο蟮奶匦浴?/span>

 

優(yōu)點:

處理復(fù)雜多變的系統(tǒng)有很大優(yōu)勢,可以很好發(fā)揮(Gof)模式的作用。

 

缺點:

O/R mapping 是件比較麻煩的事。

 

說明:

有兩種風(fēng)格的Domain Model

1.   每個對象對應(yīng)于數(shù)據(jù)庫中的表中一行。 Active Record模式

2.   有很多的對象(由于使用繼承和模式,比如一個接口,多個實現(xiàn)類) Data Mapper模式

 

一系列的實體對象如何存儲需要仔細(xì)考慮,一些簡單的應(yīng)用可以將他們從數(shù)據(jù)庫中全部載入,如果對象很多,那么有時需要按需載入。如果是服務(wù)器上的對象那么還要考慮使用session進(jìn)行管理。同時O/R mapping 也是一個要注意的問題。

 

使用Domain Model很容易引起對象臃腫。比如為了讓Contract對象可以在UI中被操作,那么就需要在Contract類中添加專門的函數(shù),如此一般對象就容易變的很大。這時候可以考慮將一些通用的操作提到專門的類中,甚至提到其他層,比如UI層。但是如果提到其他地方,人們有時就會忽略它,以致再寫一次,產(chǎn)生不必要的重復(fù)。Martin建議還是放在原來的類中,因為這種對象臃腫的現(xiàn)象往往比預(yù)期的少,就算發(fā)生也容易發(fā)現(xiàn)并修改。

 

此處Martin還提到了EJB,個人不是太了解,總之他覺得EJB1.0不太好,建議使用POJOplain old java objects)就是常見的自定義的java對象。除非是那種小的對象系統(tǒng),比如沒怎么用到繼承,模式的系統(tǒng)可以使用EJB中的Entity Bean

他還提到Entity Bean不能re-entrant,這是它的主要缺陷。(誰來解釋一下,我看的一知半解)而且CMPO/R mapping也是支持有限。不過他對EJB2.0好像評價不錯,現(xiàn)在3.0都出來了,哪位高人介紹一下啊。

 

涉及模式:

簡單類結(jié)構(gòu)Active Record  復(fù)雜用到多態(tài)和模式的類結(jié)構(gòu)DataMapper


注:此處僅為個人的簡單理解,歡迎指教。

Feedback

# re: 企業(yè)設(shè)計模式讀書筆記 Domain Model  回復(fù)   

2005-01-31 10:03 by 純爺們
我覺得EJB中的Entity Bean,尤其是CMP,實際運(yùn)用中不可能只靠它,原因我覺得有下面幾條:
1.CMP有太多的內(nèi)在處理,效率是比較低的。
2.因為它是把行記錄對象化,當(dāng)然操作是方便了許多,但是對于批量的數(shù)據(jù)不太適合,所以曾經(jīng)有人建議在處理查詢的時候還是用JDBC。

不知道是不是我記錯了,我覺得在這本書中說的active record模式并不是你筆記里寫的對應(yīng)數(shù)據(jù)庫中的表,而是對應(yīng)表中的行,從record上也可以看出,實際上在CMP中處理的對象我個人覺得是active record模式。尤其是在Active Record對象中可能要包含操作,比如在CMP中的對于對象的CRUD操作是有的,這可能和Row Data Gateway不一樣的地方


個人的拙見,F(xiàn)YI!

# re: 企業(yè)設(shè)計模式讀書筆記 Domain Model  回復(fù)   

2005-02-01 13:11 by idior
active record模式確實是對應(yīng)一行。謝謝提醒,筆誤。
能否指教一下re-entrant。

# re: 企業(yè)設(shè)計模式讀書筆記 Domain Model  回復(fù)   

2005-02-01 17:11 by 純爺們
re-entrant,我也不知道,我沒有做過J2EE的開發(fā),呵呵!你要是搞懂了記得通知一下:)

# re: 企業(yè)設(shè)計模式讀書筆記 Domain Model re-entrant,  回復(fù)   

2005-04-03 18:32 by 陸剛
說 EJB 不能re-entrant,我理解Martin的意思如下:

實際上是一個包依賴關(guān)系,你不能從A包調(diào)用B包的同時,又從B包調(diào)用A包. 其實不光EJB如此,.Net也如此.

可以建立一個Facade層,比如C包,可以向下調(diào)用A包和B包,我在.NET是如此實現(xiàn)的,但是EJB如何,我不知道細(xì)節(jié).

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多