面向对象的企业开发(1)事务脚本模式 Traction Script Pattern
2017-11-12 00:00
141 查看
前言:企业应用架构分为三个基本组织层次:表现层、领域层、数据源层。其中领域层,又成为业务逻辑层。领域层可以分为三种主要的模式:事务脚本、领域模型、表模块。
名称的由来:在java界设计模式界,把过程式的代码,叫做脚本。因为大多数情况下,每一个数据库事务对应一段代码脚本,所以使用“事务脚本“来描述该模式。
事务脚本(Traction Script)优点是简单。对于只有少量逻辑的应用程序来说最适合。
缺点是当业务逻辑越来越复杂时,会造成事务之间的冗余代码。任何公共代码都可能存在多个副本。
谨慎提取公共子程序可以避免很多问题,但更复杂的业务逻辑则需要建立领域模型设计模式(见另一篇还没写的文章)。
虽然面向对象很强大,但也不要忽略事务脚本。简单的基于事务脚本的解决方案可以加快开发速度,而且运行速度也很快。
运行机制:
使用事务脚本时,领域逻辑主要通过系统所执行的事务来组织。这样做的好处是无需关心其他事务的内部实现。
我们要尽可能分离事务脚本,将它们放置在,与表现层和数据源层类不同的类中。把事务脚本组织成类,优点在于,允许以对象的方式来操作脚本类的实例。虽然,在采用事务脚本模式的领域层很少有这种需求,但仍然值得这么做。
组织成类的方法的第一种方法,是将数个事务脚本放在一个类中,每个类围绕一个主题将事务脚本组织在一起。
另一种方法是,一个事务脚本对应一个类。使用命令模式(通用设计模式中的Command Pattern,将来我会专门讨论这种通用设计模式),定义一个所有命令的父类,在父类中声明事务脚本逻辑的执行方法。
下一篇文章会以代码形式来继续讲解领域逻辑层次中的事务脚本模式。
名称的由来:在java界设计模式界,把过程式的代码,叫做脚本。因为大多数情况下,每一个数据库事务对应一段代码脚本,所以使用“事务脚本“来描述该模式。
事务脚本(Traction Script)优点是简单。对于只有少量逻辑的应用程序来说最适合。
缺点是当业务逻辑越来越复杂时,会造成事务之间的冗余代码。任何公共代码都可能存在多个副本。
谨慎提取公共子程序可以避免很多问题,但更复杂的业务逻辑则需要建立领域模型设计模式(见另一篇还没写的文章)。
虽然面向对象很强大,但也不要忽略事务脚本。简单的基于事务脚本的解决方案可以加快开发速度,而且运行速度也很快。
运行机制:
使用事务脚本时,领域逻辑主要通过系统所执行的事务来组织。这样做的好处是无需关心其他事务的内部实现。
我们要尽可能分离事务脚本,将它们放置在,与表现层和数据源层类不同的类中。把事务脚本组织成类,优点在于,允许以对象的方式来操作脚本类的实例。虽然,在采用事务脚本模式的领域层很少有这种需求,但仍然值得这么做。
组织成类的方法的第一种方法,是将数个事务脚本放在一个类中,每个类围绕一个主题将事务脚本组织在一起。
另一种方法是,一个事务脚本对应一个类。使用命令模式(通用设计模式中的Command Pattern,将来我会专门讨论这种通用设计模式),定义一个所有命令的父类,在父类中声明事务脚本逻辑的执行方法。
下一篇文章会以代码形式来继续讲解领域逻辑层次中的事务脚本模式。
相关文章推荐
- 面向对象的企业开发(2)事务脚本设计模式代码讲解
- 【深入PHP 面向对象】读书笔记(二十二) - 企业模式(七) - 业务逻辑层与事务脚本
- [转编] 企业架构模式之领域逻辑模式的实现(事务脚本、领域模型、表模块、活动记录)
- PHP面向对象之事务脚本模式(详解)
- 企业Shell面试题15:开发Rsync服务启动脚本案例
- script的async属性以非阻塞的模式加载脚本
- iOS开发企业版ipa分发(In-House模式)记录
- Spring的事务管理难点剖析(精通Spring+4.x++企业应用开发实战 第12章)
- Spring的声明式事务管理(李刚 轻量级javaEE 企业应用实战-三大框架整合开发)
- 面向对象的企业开发(6)之 行数据入口 例子
- 企业应用开发模式 ERP项目中应用到的技术和工具
- 不错的一篇面向对象的PHP开发模式(简写版)
- 【IOS 开发学习总结-OC-10】★ objective-c面向对象之——成员变量,模拟类变量,单例模式
- Oracle Database 11g SQL开发指南store模式脚本
- 业务逻辑层的设计(五)——事务脚本模式介绍
- 【深入PHP 面向对象】读书笔记(十九) - 企业模式(四) - 应用控制器
- 软件开发大师谈企业应用架构模式
- 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- .NET应用架构设计—表模块模式与事务脚本模式的代码编写