`
韩悠悠
  • 浏览: 842419 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

4,领域逻辑模式

 
阅读更多

事务脚本-----------
使用过程来组织业务逻辑,每个过程处理来自表现层的单个请求。
运行机制
使用事务脚本时,领域逻辑主要通过系统所执行的事务来组织,例如:如果需要预定一间酒店房间,则在“预定酒店房间”这一过程中会发现用于查找空房间,
计算价格和更新数据库的逻辑。
这种方法的好处之一就是你无须关系其他事务的内部实现,你的任务就是获得输入,查询数据库,处理并将结果保存到数据库中。
一般情况下,竟可能分离事务脚本,至少应当将他们放在不同的子程序中,而更好的方法则是将他们置于与其他处理表现层和数据源层的类相独立的类中,
此外,绝不让事务脚本调用任何表现层逻辑。

可以用俩种方法来把事务脚本组织成类,最常用的方法是讲数个事务脚本放在一个类中,每个类围绕一个主题讲相关的事务脚本组织在一起,
另一种方法则是每个事务脚本对应一个类,如下图,(此时需要使用命令行(command)模式)。这种情况下应定义一个所有命令的父类,在父类中声明事务脚本
逻辑适合的执行方法,
优点在与:允许你运行时以对象的方式来操控脚本类的实例。


 


使用时机
事务脚本胜在简单,对于只有少量逻辑的应用程序来说,使用这一模式非常自然,无论在性能上还是理解上都不会带来太大的开销,
但是,当业务逻辑越来越负责时,使用这一模式就会越来越难以保持良好的设计,他特有的问题是事务之间的多余的代码,既然主要是为了处理一个事务,那么任何公共
代码都可能存在多个副本。

收入确认问题---------------------
收入确认是商业系统中一个常见的问题,关心的是何时讲所收的钱入账,如果我卖给你一杯咖啡,收入确认就很简单了,我给你咖啡,收钱,然后立即将钱入账,但是许多交易中
的收入确认却很负责,例如:你给我一笔预聘费,让我为你提供一年的顾问服务,即使你今天就给了我这笔钱,我可能仍然不能立即入账,因为完成服务需要一年时间,可能一个月
以后你意识到作为写作的我的编程技术退化了,于是取消这以合同,解决办法就是没月讲预聘费1/12入账。

收入确认的规则种类繁多而且异变,这些规则有的是由法律决定,有的是由行规决定,有的是由公司的经营政策决定,收入跟踪变成了一个十分负责的问题。
 领域模型-----

 在应用程序中使用领域模型需要建立一个完整的由对象组成的层,来对目标业务领域建模,你会发现其中有的对象模拟业务活动中的数据,有的对象捕捉业务使用的规则,数据和处理
 一般整合在一起,从而使得数据和数据之上的操作紧密聚合。

 因此,领域模型衍生出俩种风格,简单领域模型看起来与数据库设计很类似,这种设计中几乎每一个数据库表都与一个领域对象对应,而复杂领域模型则与数据库设计不同,他使用继承
 ,策略和其他设计模式,是一张由互联的细粒度的对象组成的复杂网络,复杂领域模型更适合于复杂的逻辑,但它到数据库的映射比较困难。

  • 大小: 11.3 KB
分享到:
评论

相关推荐

    【Java设计模式-源码】领域模型模式:构建强大的业务逻辑

    领域模型模式旨在在软件中创建一个与它所设计代表的现实世界系统相匹配的概念模型。它涉及使用丰富的领域对象,这些对象封装了与应用程序领域相关的数据和行为,确保业务逻辑集中化。 ## 二、详细解释及实际示例 1....

    模式识别和图像处理中的模糊逻辑模型和算法Fuzzy Models And Algorithms For Pattern Recognition And Image Processing

    模糊逻辑模型和算法在模式识别与图像处理领域中扮演着重要的角色。模糊逻辑是一种处理不确定性、不精确信息的数学工具,它扩展了传统二进制逻辑的概念,允许以连续的、非黑即白的方式处理数据。在本篇讨论中,我们将...

    DDD领域设计模式代码案例

    DDD(领域驱动设计)是一种软件开发方法,它强调以业务领域为中心进行系统设计,通过将复杂的业务逻辑转化为可理解的模型来提升软件质量。在Java环境下,DDD可以帮助开发者更好地理解和实现业务逻辑,提高代码的...

    领域驱动(DDD)充血模式下,domain 与 Service以及Repository的解耦---DOMAIN EVENT

    领域模型是业务逻辑的抽象表示,它包含了业务领域的实体(Entities)、值对象(Value Objects)、领域服务(Domain Services)和仓储(Repositories)等元素。在充血模式下,这些组件拥有丰富的业务逻辑,而不仅仅是...

    服务主导逻辑下的新兴出版模式研究_服务本质与概念框架

    ### 服务主导逻辑下的新兴出版模式研究 #### 一、服务主导逻辑的内涵 随着信息技术的发展,特别是“互联网+”行动计划上升至国家战略层面,出版行业正经历着前所未有的变革。传统出版模式主要依赖纸质媒介进行内容...

    法律关系归约模式:法律人工智能的实现逻辑.pdf

    其研究的目的是将复杂的法律关系转化为人工智能可以理解和处理的逻辑框架和语言模式。法计算学理论作为法律人工智能研究的理论基础,试图通过实证分析法学方法初步构建法律关系归约模式,为法律人工智能提供基本逻辑...

    领域驱动设计与模式实战

    10. **仓储模式**:负责对象的持久化,提供了一种与具体数据库访问技术解耦的接口,使得领域模型可以专注于业务逻辑,而不关心数据存储细节。 通过实践这些模式和原则,开发者能够构建出更符合业务需求、更易于维护...

    基于本体的领域业务逻辑建模及其应用研究(精).pdf

    本课题的目标是利用本体建模技术,创建面向领域的本体,实现业务逻辑的建模和推理应用,以突破现有的应用范围、深度和模式。 此研究与浙江省的信息产业发展紧密相关,符合其“十五”计划中的发展目标,旨在为浙江省...

    领域(业务)模型的分析模式

    领域模型不仅帮助我们更好地理解业务逻辑,而且还能促进团队成员之间的有效沟通,确保软件设计与实现能够真正符合业务需求。 #### Martin的分析模式介绍 Eric Evans在其著作《领域驱动设计》中提出了领域驱动设计...

    ALU 算术逻辑单元

    在计算机硬件领域,ALU(算术逻辑单元)是计算机CPU中的核心组成部分,负责执行基本的算术和逻辑运算。这个实验将带你深入理解ALU的工作原理,并通过使用Altera公司的开发工具Quartus II来实际实现一个简单的ALU。 ...

    领域模型驱动设计1553265830.pdf

    4. 领域驱动设计要点 要成功地实施领域驱动设计,需要遵循以下要点: - 成为业务专家:了解业务领域,通过如考取相关证书等手段提升对业务的理解。 - 领域模型设计:采用充血模型而非贫血模型,并且在设计中融合设计...

    时序逻辑.rar

    时序逻辑提供的规则和语句能被应用于软件组件交互中,以时序变化为基础,揭示系统行为的演变模式,进而指导设计者进行有效的问题定位和系统优化。 另一篇文件《时态逻辑(Allen).pdf》极有可能是对Allen时态逻辑的...

    二进制逻辑运算.pdf

    二进制逻辑运算在计算机科学领域,特别是在计算机系统和数字电路设计中扮演着核心角色。逻辑运算基于二进制数系统,其中0和1代表两种对立的状态,常用于表示真假、是与否、存在与不存在等逻辑关系。这些运算在硬件...

    描述逻辑英文教程

    描述逻辑(Description Logic,简称DL)作为知识表示领域的一种正式形式主义,近年来在人工智能与计算机科学的研究中占据了核心位置。它不仅提供了对世界高层面描述的能力,还能够有效支持智能应用的构建,这些应用...

    逻辑思维训练500题(修订版).pdf

    本书《逻辑思维训练500题(修订版)》通过提供丰富的练习题和实用的训练方法,旨在帮助读者全面提高逻辑思维水平,从而在各个领域取得更好的成绩。 总之,《逻辑思维训练500题(修订版)》不仅是一本工具书,更是个人...

    逻辑学导论

    无论是软件开发中的算法设计,还是人工智能领域的模式识别,逻辑推理都是关键技术之一,推动了科技的进步与发展。 ### 结语 逻辑学作为一门古老的学科,在现代社会依然发挥着不可替代的作用。通过对逻辑学的深入...

    【Java设计模式-源码】数据映射器模式:解耦数据存储与业务逻辑

    数据映射器模式旨在在数据库和业务逻辑之间创建一个抽象层,使它们能够独立发展。它将数据从数据库对象映射到内存中的数据结构,反之亦然,最大限度地减少应用程序核心逻辑与底层数据库结构之间的直接依赖。这种解耦...

    领域驱动设计案例-盒马实践

    依赖注入是领域模型中的一种设计模式,它指的是在 runtime 时将对象之间的依赖关系注入到对象中。在 Spring 框架中,我们可以使用 @Autowired 注解来实现依赖注入。 测试友好 在领域模型中,我们需要考虑测试友好...

    NIIT逻辑测试题答案

    4. 逻辑题答案B:这可能是一道涉及逻辑悖论或者矛盾的问题,需要在多个选项中找到最合理或最具逻辑性的答案。 5. 逻辑题答案B:这类题目可能考察的是逻辑一致性,要求找出与其他选项相冲突或不符合逻辑的选项。 6....

Global site tag (gtag.js) - Google Analytics