项目总结(采用领域驱动开发方式)
生活随笔
收集整理的這篇文章主要介紹了
项目总结(采用领域驱动开发方式)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近在做一個項目。采用J2EE作為開發(fā)平臺,通過領(lǐng)域驅(qū)動開發(fā)(DDD)的方式進行開發(fā)。 首先說一下系統(tǒng)總體架構(gòu)。系統(tǒng)分為表現(xiàn)層,業(yè)務(wù)層(業(yè)務(wù)層分為應(yīng)用層和領(lǐng)域?qū)?,持久層, 其中表現(xiàn)層用Struts MVC框架,業(yè)務(wù)層用Spring框架,持久層用hibernate框架,現(xiàn)在主 要總結(jié)一下業(yè)務(wù)層和持久層。 業(yè)務(wù)層:根據(jù)DDD,業(yè)務(wù)層應(yīng)該分為應(yīng)用層和領(lǐng)域?qū)?#xff0c;其中應(yīng)用層的無狀態(tài)的服務(wù)通過 Spring?IOC容器進行裝配和管理。核心業(yè)務(wù)邏輯放到領(lǐng)域?qū)?#xff0c;而應(yīng)用層只是一個很薄的層, 指揮領(lǐng)域?qū)拥哪P蛯ο笸瓿蓸I(yè)務(wù)操作。領(lǐng)域模型根據(jù)DDD分為了實體,值對象,和服務(wù),其 中實體是系統(tǒng)中一些需要記錄和跟蹤的對象,比如Account對象等,值對象則是一些對實體 的描述,以及實體的狀態(tài)等,比如項目的站內(nèi)信中,可以將消息的狀態(tài)做為抽象消息的值對 象。為了提高實體的內(nèi)聚性,將一些不是實體的職責分配給領(lǐng)域?qū)臃?wù)對象。當然DDD中還 有關(guān)于聚合,工廠,倉庫,個人理解工廠主要是用來創(chuàng)建對象的,工廠控制了對象生命周期 的開始,而對象的生命周期不可能只有開始這么簡單,所以倉庫就發(fā)揮了作用,倉庫就是用 來管理對象的中間狀態(tài)的。倉庫可以通過緩存來管理對象,提高系統(tǒng)的性能。至于事務(wù)處理, 因為項目不需要分布式,所以直接采用JDBC事務(wù),具體就是通過Spring管理的hibernate 事務(wù)來實現(xiàn),將事務(wù)邊界界定在應(yīng)用層服務(wù)的開始和結(jié)束,這樣也充分發(fā)揮Spring的聲明式 事務(wù)管理功能。 持久層采用hibernate框架來完成。首先定義一個支持CRUD操作的泛型DAO,然后利用 Spring支持回調(diào)模板類(HibernateTemplate)來實現(xiàn)最基礎(chǔ)的CRUD操作,其它的Dao接 口繼承泛型接口。這樣CRUD操作在統(tǒng)一的基類中完成,并且還可以利用泛型帶來的安全性 檢查。 最后先請教一下各位兄弟,我對于應(yīng)用層服務(wù)和領(lǐng)域?qū)臃?wù)的劃 分不是很清楚,請問一下各位具體的劃分標準是什么?各位在項 目中怎么做的?我現(xiàn)在是把應(yīng)用層服務(wù)當做Facade來用,用來 封裝業(yè)務(wù)邏輯,各位兄弟還有什么好的方法嗎?請指教一下,謝了。
轉(zhuǎn)載于:https://blog.51cto.com/yuquan/360352
總結(jié)
以上是生活随笔為你收集整理的项目总结(采用领域驱动开发方式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu系统设置开机自启动
- 下一篇: JTAG 案例