疾风萧萧

See, this isn't the finish line.The future is the finish line......
posts - 21, comments - 67, trackbacks - 0, articles - 16
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

领域逻辑的实现分类

Posted on 2006-07-23 17:17 疾风 阅读(...) 评论(...) 编辑 收藏

依据Martin Fowler的《企业应用架构模式》的说法,一般有三种方式实现领域逻辑:事务脚本、领域模型和表模块。

事务脚本

所谓事务脚本,其实就是让每个过程对应用户可能的一个动作。所以,我们可以将这一模型想象成一个动作或是业务的处理脚本。

事务脚本有以下的优点:

1、  它是一个简单的过程模型;

2、  事务的边界显而易见:一个事务总是始于其脚本的打开,而终止于其脚本的关闭;

3、  它能与基于数据入口或者表数据入口的简单数据源层协作得很好。

当然,它的缺点也是显而易见的:随着领域逻辑变得比较复杂,事务脚本的模式会使得程序变成由许多处理过程组成的极度杂乱的网。


领域模型

       
    领域模型使用面向对象的方法来抽象和建立业务规则。与业务脚本相比,领域模型更适合处理复杂和易于变化的领域逻辑。也是因为使用面向对象方法的缘故,领域模型对关系数据库的存取也更为麻烦。


表模块

      
表模块是事务脚本和领域模型的一个中间地带,它围绕着“表”来组织领域逻辑,所以比业务脚本更容易发现和移除荣誉代码;另一方面,表模块也无法使用领域模型中用于组织细粒度逻辑结构的技术,例如继承、策略和其它面向对象的设计模式。

       表模块最大的优点在于其与软件架构中已有部分的衔接,比如记录集一起工作。



    对于使用Visual Studio/.NetDelphi的开发者来说,因为提供了非常强劲的数据集相关基础设施,所以在开发相对简单的数据密集型系统(如MIS)是使用表模块来实现领域逻辑或许是不错的选择。