常言笑的家

          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 常言笑 閱讀(231) 評論(0)  編輯  收藏 所屬分類: 技術總結

          My Links

          Blog Stats

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 正宁县| 永登县| 东城区| 宁乡县| 辉南县| 余干县| 夹江县| 马鞍山市| 台东县| 浮梁县| 奉新县| 犍为县| 泸西县| 高雄市| 靖宇县| 娱乐| 西畴县| 元阳县| 保康县| 新余市| 乳山市| 东平县| 盐城市| 恭城| 乐业县| 樟树市| 景宁| 应城市| 嫩江县| 临夏县| 界首市| 威信县| 龙海市| 额敏县| 永泰县| 郁南县| 龙里县| 孟连| 山西省| 万山特区| 尖扎县|