锁定老帖子 主题:有关领域对象
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-09-10
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-09-10
这个问题其实很早以前就讨论过了,也就是是否应该在POJO中加入业务逻辑,使之成为BO的问题,你搜索一下历史帖子好了。我个人的观点是不应该加入的,gigix在他的blog也对这个问题产生过置疑。
|
|
返回顶楼 | |
发表时间:2004-09-10
nickle_shen 写道 在一些领域对象建模的书上有提到这样的设计,我的朋友觉得这样做在使用上也很方便。
方便在何处? 这样一来,每个entity都要去实现自己的save,load,find等 |
|
返回顶楼 | |
发表时间:2004-09-20
notyy 写道 nickle_shen 写道 在一些领域对象建模的书上有提到这样的设计,我的朋友觉得这样做在使用上也很方便。
方便在何处? 这样一来,每个entity都要去实现自己的save,load,find等 如果不加业务的话,这些entity不是和ms的DataSet一样的了?比如一个Account对象只表示数据,而全部操作要另一个对象代劳,那这二种形式其是是一样的: 对象版: Account account = <<get an account>>; account.setName("sun");; AccountManager.update(account);; 非对象版: Entity account = <<get an account>>; account.setString("Name", "sun");; AccountManager.update(account);; 只不过对象版从表面上看起来要好看一点,而实际上没多大好处,反而非对象版对于灵活性上要好一点(比如字段定制,动态显示等)。 |
|
返回顶楼 | |
发表时间:2004-09-20
回答是Negative !
在我目前所做过的项目里,把业务逻辑(当然你说的是持久逻辑,不过原理应该差不离)写进领域对象里以后出现以下问题: 1.逻辑僵化,无法更改。领域对象是整个程序的基石,改的话,伤筋动骨,改动会贯穿各个层面。在其间写入任何可能会变的逻辑都是自杀。 2.兼容性差。我用过WSAD的向导生成web service接口,结果它无法处理含有业务逻辑的领域对象,更无法在客户端生成有效的proxy。直到去除了所有除getter/setter方法以外的内容后才正常。 3.目前解决方案:领域对象全部使用极为简单的VO。其他需求通过wrapper模式外覆解决。 |
|
返回顶楼 | |
发表时间:2004-09-20
to monk:
我说上面的话不是指我在这些对象中加了业务,我从来就没加过,加了业务会把系统搞复杂了且难设计好(或是我还不懂如何作这样的设计)。我是指如果一个对象只当作存对象的值来用,还不如就做一个通用的类来管理一个对象的值(有如ms的DataSet),而ms就把这种做法很好的发挥了,比如窗体数据绑定就很好用啊,且数据源不一定是它的DataSet,你也可以自已做一个,什么方便就怎样啊)。这样的话如果要实现高度可定制的系统,可以有一个MetaData类描述这些对象有什么字段,字段的标题,类型,显示格式,实体之间的关系。。。,要加一个字段只要在MetaData和数据库里改一下就行了,代码不用改,因为显示会查询MetaData得到要显示的信息。 |
|
返回顶楼 | |
发表时间:2004-09-20
原来你说的是这个啊。
那用JDBC不就行了,不必自己做。ResultSet类完全符合你的标准,大不了再外加一个wrapper简化一下逻辑。 不过我觉得这不是什么主流做法。 |
|
返回顶楼 | |
发表时间:2004-09-20
呵呵,那你说主流的这种做法比之有何好处啊?把数据和操作分开好象有点又退回到过程设计了,失去了面向对象的一些好处(不过这个也有点难怪,毕劲设计一个信息处理系统和设计一个字处理程序差别太大了)。
|
|
返回顶楼 | |
发表时间:2004-09-20
恩...也不能说谁是主流吧。你当然可以省却对象/关系映射——要是你压根不需要把数据以对象的形式展现出来呢?比如需要在页面上显示一张跟数据库表一模一样的表?那就不必先O/R mapping再把对象拆开来。
各取所需。 |
|
返回顶楼 | |
发表时间:2004-09-20
monk 写道 恩...也不能说谁是主流吧。你当然可以省却对象/关系映射——要是你压根不需要把数据以对象的形式展现出来呢?比如需要在页面上显示一张跟数据库表一模一样的表?那就不必先O/R mapping再把对象拆开来。
各取所需。 问题是这样的对象根本算不上是一个合格的对象,只有数据的对象你说是一个正常的对象吗?顶多是一个贫血的对象。 |
|
返回顶楼 | |