2007年3月27日星期二

smart class or dumb data class

谈 到business object不得不考虑的一个问题就是对象的行为应该放在哪里的问题,也就是说我们的BO是应该只包含对象,还是也应该包含一些操作。Smart Class说的是第二种情况,这样的业务对象不仅包含数据同时也包含了一些方法逻辑,它们了解一些对自身的操作,比如读取数据,修改保存、判断合法性之 类。第一种情况中业务对像仅仅只包含数据,它们被称之为Dumb Data Object,再这种情况下我们通常都要另外定义一个对象来管理执行于这些数据对象之上的操作,称之为Data Object Manager。
Smart Class于我们通常使用的类一样,有数据也有操作,Rockford Lhotka的《C# 2005 Business Objects》 里面有详细的介绍,他比较推崇这种对象,并且为它们定义了非常丰富的操作(如果没有请留言我可以email给你电子版,大小为9m,所以最好有支持大附件的邮箱)。而Dumb Data Object的最大的好处是程序中的其它的逻辑层可以很好地与该类型的业务对象一起工作,比如Business layer和Data Access Layer可以引用并复用它们,这样我们定义的业务对象可以很容易地在系统的各部分传递,而不会出现任何问题。
Data Object Manager主要完成以下几个数据操作的功能:
  • GetItem
  • GetList
  • Insert
  • Update
  • Delete
这也是对应了基本的数据库操作,而业务对象的操作一般来说还包含一些业务处理方法,比如:
  • Search
  • Deactivate
  • Clone
  • Filter
其实现在有了像NHibernate这样的东西,业务对象(或manager)基本上已经不包含什么数据库的操作了,而是主要包含列表二中那些操作。如果是配合使用代码生成工具的人肯能更愿意使用Dumb Data Object。

没有评论: