常言笑的家

          Spring, Hibernate, Struts, Ajax, RoR

          Domain-Driven Design領域驅動設計(續)

               最初層次只分為三層:表現層、業務層和持久層;DDD其實告訴我們如何讓實現業務層!
           
                按照DDD領域建模觀點看,中間業務層還應該再分為應用層和領域層(具體文章見http://domaindrivendesign.org)。Service屬于應用層,Domain則屬于領域層。它們的定義是:應用層:定義軟件可以完成的工作,并且指揮具有豐富含義的領域對象來解決問題,保持精練;不包括業務規則或知識,無業務情況的狀態; 領域層:負責表示業務概念、業務狀態的信息和業務規則,是業務軟件核心。

            層次之間必須清晰分離,每個層都是內聚的,并且只依賴它的下層,為了實現各層的最大解耦,Ioc模式和Ioc容器是目前最好的選擇。

                在DDD觀點看來,領域模型Domain其實分為三種元素:實體Enity、值對象( Object)和服務(Service)。

                模型對象分實體和值對象,其實就是實體對象和對象狀態的區分,值對象表示對象狀態,在JiveJdon3中,有ForumState和ForumThreadState,其實它們就是值對象,對象狀態非常重要,它和對象生命周期scope有密切關系,最近出了一個Scopes開源免費框架就是專門提供對象生命周期管理的,所以,作為一個業務層框架必須有提供生命周期管理功能。


          狀態對象:數據庫的替代者

                服務是一些行為功能,有人指出沒有行為的模型只有getter/setter,是不是貧血模型,或者叫失血模型,DDD專家Eric Evans認為:將領域需要的功能強加給實體和值對象,不僅會破壞模型中對象定義,而且會認為地添加毫無意義的對象,

          失血模型的請教

          posted on 2006-12-16 22:23 常言笑 閱讀(232) 評論(0)  編輯  收藏 所屬分類: 技術總結

          My Links

          Blog Stats

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 鄂州市| 福贡县| 万年县| 墨竹工卡县| 吉木萨尔县| 泾阳县| 云南省| 兴和县| 来宾市| 娄烦县| 龙里县| 平安县| 玉屏| 锦州市| 陵川县| 辽阳市| 大厂| 故城县| 北宁市| 临泽县| 梁河县| 义乌市| 天峻县| 四会市| 怀宁县| 天水市| 合江县| 阜平县| 元阳县| 广平县| 莫力| 赣榆县| 阿坝县| 莎车县| 汾阳市| 庐江县| 饶河县| 宣汉县| 西安市| 彰化市| 嘉峪关市|