openfans整體設(shè)計(jì)介紹
?????????先說一下openfans最早版本的整體設(shè)計(jì)。首先是用Equinox直接new出項(xiàng)目來,它默認(rèn)是springmvc+spring+hibernate再加-上一些常用的組件,如sitemesh,common-validator,dwr等。而這些都是我們想要的。??????????有了這個(gè)大的框架,我們可以進(jìn)行業(yè)務(wù)建模了,我們采用的是領(lǐng)域模型驅(qū)動(dòng)的設(shè)計(jì)方案。首先考慮的是對(duì)象以及對(duì)象間的關(guān)聯(lián),我們也沒用什么建模工具和自動(dòng)生成工具,-先自己寫java類,寫好屬性,用eclipse生成get和set。然后手寫hibernate的hbm配置文件,有點(diǎn)土,這也是我第一正式的使用hiber-nate。開始我用了dao模式,寫了好多dao,后來和oofrank討論,一直認(rèn)為hibernate就是我們的持久層,完全沒有必要為了移植性(如將來使-用ibatis)而引入dao。所以拋棄了dao模式,而由一個(gè)fa?ade處理持久。這樣的設(shè)計(jì)跟一般的三層模型略有不同,hibernate就是我們的持久-層,然后通過一個(gè)fa?ade提供對(duì)上層的接口。領(lǐng)域模型和mvc中的c充當(dāng)我們的業(yè)務(wù)層。我們的對(duì)象不是貧血模型,而是有能力的。當(dāng)然現(xiàn)在這種能力更多是對(duì)象-間的關(guān)聯(lián),而對(duì)持久層無能為力,但也已經(jīng)方便了很多。Controller現(xiàn)在具有較多的功能,它能調(diào)領(lǐng)域?qū)ο螅材苤苯邮褂胒a?ade。然后是jsp+js-tl+el做純粹的展現(xiàn)層。C和V的分類原則是這樣的:一類是查看,一類是form提交。所有查看由一個(gè)viewController統(tǒng)一處理(這樣增加了一些-耦合,但效果還可以),一個(gè)對(duì)象的增、刪、改由一個(gè)formController處理。?
???????????有了這些設(shè)計(jì)原則,做起來倒是很快,幾天就核心功能出來了。對(duì)于數(shù)據(jù)庫,只要建一個(gè)庫就行,其余的如建表,改表等都由hibernate來自動(dòng)幫你完成,數(shù)據(jù)庫-就是在寫hbm時(shí)關(guān)心下,其它完全對(duì)我們透明,感覺還是挺爽的。?最初版一共就20幾個(gè)類,完成了很多的功能,可以具體看 www.openfans.org
???????????下一篇寫怎么使用maven和tomcat,讓openfans在自己機(jī)器上跑起來。先去吃飯了,^_^。大家有任何疑問和好的改進(jìn)意見,都可以提,跟帖。
posted on 2006-03-28 11:51 pesome 閱讀(1613) 評(píng)論(3) 編輯 收藏 所屬分類: 開源軟件