[CSLA.Net]职责驱动设计方法(业务领域建模)

时间:2022-08-31 12:21:44

职责驱动设计(业务领域建模)

(读书笔记:Expert C# 2008 Business Objects)

基于对象的责任进行分析

CRC表

潜在对象(C)----------职责(R)---------协作方(C)

-----------------------------------------

====           ======        =======

------------------------------------------

通过这个表,可以看出来,对象的责任是否清晰。如果职责描述不清,或者内容冗长,那么可以肯定是有问题的。

对象需要处理一个以上的职责,这意味着是有缺陷的。

画对象关系表,反复的修订,逐渐细化

(图)

检查:

1)是否是有可能重复的对象

2)是否是一个值对象(无标识符,无操作方法)

3)是否有循环嵌套,引用(很危险)

4)与其他对象无关(还有尚未发现的关系)

5)如果是一个列表,加载全部内容。(对用户来说,他的一个选择操作,可能会造成高昂的系统开销。这样的设计是不负责任的。)

 6)某个对象是否是推断出来的(在业务领域没有,是开发人员创造出来的)。

设计时的性能优化

  1. 对象的属性,要考虑是否是只读的。如果没有特别的要求,不要给调用方犯错的机会,同时能减小系统的开销。
  2. 考虑对象是否会经常发生变动——考虑是否将它缓存起来(不一定是放在内存里)。当然,对象在多用户操作时,需要系统通知用原来的值是否被人修改过了。(这好像是另外一个问题……)

设计时在对象模型提供导航支持

这不是必需的。但是这是很有好处的。比如我们有个ProjectInfo对象,那么在UI层,有可能用户会由此导航到Project对象,典型的方法是调用ProjectInfo. GetProject()

最终的设计反映在CRC表,对象关系图。我们拿用例来复核(测试),看看是否能满足用例。