2006-12-01
敏捷开发的必要技巧7:将数据库访问,UI和域逻辑分离
(这里面的域逻辑,原文是叫Domain logic,我想用业务逻辑层来说明的,可是后面又有这句话,“Domain logic is also called "domain model" or
"business logic".”,即“域逻辑又称为域模型或者业务逻辑”,所以我们还是老老实实叫它域逻辑层吧)。
中间略过。。。。。。。
这段代码看起来还正常吧?但是这里面将处理三种类别的代码都混在了一起:
1.UI: JDialog, JTextField, 响应用户事件的代码。
2.数据库访问: Connection, PreparedStatement, SQL statements, ResultSet 等等。
3.域逻辑: 参会者的默认id,参会者的名字必填,所属地区的限制等等。域逻辑又称为“域模型”或者“业务逻辑”。
这三个不同类别的代码混在一起,会造成下面的问题:
1.代码很复杂。
2.代码很难重用。如果我们想创建一个EditParticipantDialog,让用户更改参会者的信息,我们就想重用部分域逻辑(比如,地区的限制)。但实现这部分域逻辑的代码跟AddParticipantDialog混在了一起,根本不能重用。如果是在一个web系统中,就更难重用了。
3.代码很难测试。每次要测这样的一段代码,我们都要建一个数据库,还要通过一个用户操作界面来测试。
4.如果数据库表结构更改了,AddParticipantDialog这个类,还有其他的很多地方都要跟着更改。
5.它导致我们一直在考虑一些低层的太细节的概念,比如数据库字段,表的记录之类的,而不是类,对象,方法和属性这一类的概念。或者说白了一点,一直在考虑怎么往数据库里面装数据,而没有了面向对象的概念,没有了建立业务模型的思维。
因此,我们应该将这三种类别的代码分离开(UI,数据库访问,域逻辑)。
"business logic".”,即“域逻辑又称为域模型或者业务逻辑”,所以我们还是老老实实叫它域逻辑层吧)。
中间略过。。。。。。。
这段代码看起来还正常吧?但是这里面将处理三种类别的代码都混在了一起:
1.UI: JDialog, JTextField, 响应用户事件的代码。
2.数据库访问: Connection, PreparedStatement, SQL statements, ResultSet 等等。
3.域逻辑: 参会者的默认id,参会者的名字必填,所属地区的限制等等。域逻辑又称为“域模型”或者“业务逻辑”。
这三个不同类别的代码混在一起,会造成下面的问题:
1.代码很复杂。
2.代码很难重用。如果我们想创建一个EditParticipantDialog,让用户更改参会者的信息,我们就想重用部分域逻辑(比如,地区的限制)。但实现这部分域逻辑的代码跟AddParticipantDialog混在了一起,根本不能重用。如果是在一个web系统中,就更难重用了。
3.代码很难测试。每次要测这样的一段代码,我们都要建一个数据库,还要通过一个用户操作界面来测试。
4.如果数据库表结构更改了,AddParticipantDialog这个类,还有其他的很多地方都要跟着更改。
5.它导致我们一直在考虑一些低层的太细节的概念,比如数据库字段,表的记录之类的,而不是类,对象,方法和属性这一类的概念。或者说白了一点,一直在考虑怎么往数据库里面装数据,而没有了面向对象的概念,没有了建立业务模型的思维。
因此,我们应该将这三种类别的代码分离开(UI,数据库访问,域逻辑)。
发表评论
- 浏览: 48725 次
- 性别:


- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
转载:如何避免制造敌人
世故 教你世故的方法 有的时候我还是觉得还是外国人能 把这一套说的都让你觉得非常 ...
-- by airskys -
转载:如何避免制造敌人
绿阳科技 写道全文读完,感觉受益非浅,可奇怪的是,为什么好像没什么人看呢?这类为 ...
-- by rtdb -
转载:如何避免制造敌人
全文读完,感觉受益非浅,可奇怪的是,为什么好像没什么人看呢?
-- by 绿阳科技 -
力荐+转载:苏格拉底的秘 ...
我说:‘这就是了工厂温度七十五度,再加上应有的七十二度,一共是一百四十七度。如果 ...
-- by 托姆波 -
力荐+转载:苏格拉底的秘 ...
娶个顶级悍妇回家自有妙处古希腊著名的哲学家苏格拉底也有一个泼妇妻子。苏格拉底经常 ...
-- by javaeye000






评论排行榜