Transaction Script 和 Domain Model--恶魔地穴

来源:百度文库 编辑:神马文学网 时间:2024/04/29 02:02:50
Transaction Script 和 Domain Model- -
一切都是对象吗?J2ee系统的开发应该都是采用面向对象技术,关键是怎么用的问题。
很久以前的一篇文章里,把一切都描述为对象,整个世界是那样的优美。我也深信不疑。
由于在我们的程序中,主要是针对数据处理和流程处理的,才知道用对象来表达不是那么自然。就涉及到了transaction script和domain model的概念,一个哲学问题!
Transaction script就是对表示层用户输入的处理程序。包括验证和计算,存储,调用其它系统的操作,把数据回传给表示层。
Domain model是所谓的域模型, 跟客观世界中的实体相对应。
Transaction script属于结构性思维,直观一些,在系统中如果domain model不是很明显,采用transaction script也是一个不错的选择。
Domain model属于OO思维,需要较强的抽象能力,习惯了就可以能够组织很复杂的逻辑,另外,我们必须考虑哪些行为是通用的、属于domain model的,哪些不是,可以通过一些xxxManager或者xxxController所实现的。
举一个例子,假如查看今天A银行到B银行的所有转帐记录,是列出A银行所有帐户对象来查看是否进行了转帐,还是从数据库中直接查询今天的转帐记录直观?
Transaction script还是有他的用处的。在我看来说,所有的程序都要通过Transaction script来组织,程度不同而已。
这个世界,除了对象,还是有对象间的关系、行为规则和记录(数据)的,观察的角度不同,就可以从不同的角度来组织系统,不一定需要用对象来表示。比如一个人是一个对象,档案所记录他一生的活动是什么,数据,是我们关注的一个方面,我们来查档案就够了,而不用去问这个人。
不排斥DB
在网上很多文章中,都会提到把系统想象成一个完美的oo世界,而是db只不过是一个持久化的手段而已。
我一直认为DB也是一个完整的世界(实际上也很完整),能够做很多事情,特别是在效率方案。
所谓采用OO和J2EE的系统,模拟现实世界,注重对象间的行为和关系,比较适合OLTP的应用。
而DB则是从数据角度来进行关注一个系统的,没有OO那么复杂的关系,处理效率很高,特别是在大批量数据处理和长事务处理的时候有自己的优势。在不存在明显错误的前提下,DB的实现一般要比OO语言要高效,只是从大的方向来讲有它自己的处理范围。
OO和DB需要一个适应、协作的过程。
你有多少系统是需要从不同数据库之间移植的,必要的时候,在j2ee方案中采用些db技术还是不错的选择。否则,就是从一个极端走到另一个极端,失之偏颇。