`
jasin2008
  • 浏览: 69486 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于rich domain object的一点总结

阅读更多
晚上在论坛上瞎逛,翻到 了一个讨论rich domain object的帖子,最后还是那句话,怎么合适就怎么来,管它是poor还是rich。企业应用总是离不开和数据库打交道,那么在domain object中不应该关心持久化问题。所以呢,如果使用java,dao还是要的。
http://www.javaresearch.org/article/68086.htmhttp://www.blogjava.net/langds/archive/2005/04/07/2892.html中,
1.识别某种业务行为的一个很确定的原则:
       domain logic只应该和这一个domain object的实例状态(并非“持久”状态)有关,而不应该和一批domain object的状态有关.
进一步的说:主要看logic是否只和这个object(注:指自身)的状态有关,如果只和这个object(注:指自身)有关,就是domain logic;如果logic是和一批domain object(注:指同类型的实体)的状态有关,就不是domain logic,而是business logic。

如果domain logic显示依赖于持久化,那么该业务方法还是移到XXXManager中合适,在XXXManager中再通过dao来执行数据库操作。

2.Domain Model 与 Hibernate PO 的区别:

领域模型的代码实现需要用一组互相协作的类来完成,每一个或者一组类承担这个领域模型的某个特征。而Hibernate的实体类只不过是其中的一组类,它承担的职责就是保持领域模型的状态的。
3.基于Domain Model 分析与设计的方法规则:
应该由领域模型来驱动你的软件内在规则,由需求驱动你的软件外在交互.

总结(使用java的情况下):
1.service层:处理业务请求,一个service提供一个确定的服务。一个service可能需要和多个domain object 和domain object manager来协作完成一项任务。
2.dao层:提供持久化操作。
3.domain object manager:实现不是明确依赖于domain 状态的行为,这些行为同样应该是只跟该domain object相关联。有时候其相当于一个提供单一domain object相关操作的service。
4.domain object:包含该domain object的状态和行为
分享到:
评论

相关推荐

    BlazeDS入门:HTTP Service

    要新建 BlazeDS 工程,需要创建 Flex 工程,勾选 Use remote object access service。然后,需要配置 J2EE 服务器,使用 Tomcat 就可以了。设定上下文路径和 blazeds.war 的位置。 三、同域访问 访问 HTTP 服务...

    领域模型设计技术实战篇.docx

    - 采用领域驱动设计的实践,比如贫血模型(Anemic Domain Model)和富领域模型(Rich Domain Model),以及Repository模式来管理领域对象。 通过上述分析,我们可以看到领域模型设计的关键在于理解业务逻辑,将其...

    TSH练习例子

    - **Rich Domain Model**:包含业务逻辑的富模型,有利于实现Model-driven的设计。 - **Hibernate插件**:如Hibernate Synchronizer,提供代码辅助功能,简化开发过程。 - **Spring与Tapestry集成**:Spring用于管理...

    EJB设计模式

    12. **贫血模型和富模型(Anemic Domain Model and Rich Domain Model)** 贫血模型将业务逻辑放在服务层,而模型对象仅包含数据。富模型则将业务逻辑内聚到域对象中,提高代码的封装性和可维护性。 通过理解和...

    充血模型设想实现(2010/07/30更新)

    充血模型,也被称为“Rich Domain Model”,是领域驱动设计(DDD)中的一种核心概念。在软件开发中,领域模型是对业务领域的抽象和建模,它包含业务规则、逻辑和状态。充血模型强调对象应该拥有自己的行为和状态,而...

    Microsoft.Press.Microsoft.Silverlight.4.Step.by.Step

    9.3 Understanding the Silverlight Object; 9.4 Key Points; Chapter 10: Accessing Network Services; 10.1 Creating a Financial Data Service; 10.2 Using HTTP POST; 10.3 Making Cross-Domain Calls; 10.4 ...

    julia-1.1.0-win64

    Scientific computing has traditionally required the highest performance, yet domain experts have largely moved to slower dynamic languages for daily work. We believe there are many good reasons to ...

    silverlight调用WCF服务

    微软的Silverlight技术,作为一种强大的RIA(Rich Internet Application,富因特网应用程序)开发框架,允许开发者创建丰富的用户体验。而Windows Communication Foundation(WCF)则为构建分布式系统提供了全面的...

    PROFESSIONAL F# 2.0

    - **Silverlight (Chapter 22):** Silverlight was a widely used platform for developing rich internet applications. This chapter covers the basics of using F# with Silverlight, although Silverlight is ...

    VB编程资源大全(英文源码 控制)

    right click and you should see "Rem Builder".<END><br>3 , syntax.zip This is an excellent example of how to highlight HTML code in a rich textbox. I encourage everyone to check it out.<END><br>4 ,...

    python3.6.5参考手册 chm

    The json module: JavaScript Object Notation The plistlib module: A Property-List Parser ctypes Enhancements Improved SSL Support Deprecations and Removals Build and C API Changes Port-Specific ...

Global site tag (gtag.js) - Google Analytics