论坛首页 Java企业应用论坛

隔离的领域层

浏览 14088 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-12-25  
//void onSaveOrUpdate(SaveOrUpdateEvent event)
在Event 中应该包括Action 的名称吧,它代表Domain 中的一个方法,它是Event 中的一个成员,我所说的业务操作是指这个Action 的名称。

使用进行反射时,很难进行单步跟踪。

因为Observer 模式中的Listener 是没有返回值的,也不应该有返回值,你举的例子只是一个简单的方法调用,而不是Listener。

我加了一个附件,里面有我的实现代码,您可以先看看。
0 请登录后投票
   发表时间:2006-12-25  
俺是摘自DefaultSaveOrUpdateEventListener
Event 中可以有很多东东啊

session
object;
requestedId;
entityName;
entity;
entry;
resultId;

不应该只有字符串,完全可用多态(如strategy)等进行灵活的设计

俺这里不能下载,只能夸夸其谈,还望谅解.
0 请登录后投票
   发表时间:2006-12-25  
当然,里面是有很多东西的,我只是说其中的Action Name,这个Action Name 是业务层的方法(当然也可以采用映射),在进行重构时,字符串表示的方法是不能够被开发工具找到的。
0 请登录后投票
   发表时间:2006-12-25  
	public void saveOrUpdate(String entityName, Object obj) throws HibernateException {
		fireSaveOrUpdate( new SaveOrUpdateEvent(entityName, obj, this) );
	}

这里的entityName一般用不上,也就是说其Event里包装的主要是Object和this,
如一般的save(Object)会调用
public void saveOrUpdate(Object object) throws HibernateException {
saveOrUpdate(null, object);
}
0 请登录后投票
   发表时间:2006-12-25  
我能理解你的意思,它是通过Event 的类型来区别具体的操作。
但是业务领域的操作是很难被抽象成各个不同的Event,所以必须使用字符来标识。
另外,它的fireSaveOrUpdate 方法也没有返回值,我不知道返回值在Hibernate 中是如何解决的。
例如:在添加对象时,我需要返回被添加的这个对象,它的fire 方法是如何实现的。
0 请登录后投票
   发表时间:2006-12-25  
以前做网管软件的时候用过这样的模式,当时的客户端是用Swing的Rich client,用这种模式的目的是多客户端的数据同步。

在Web应用中这么做值得吗?
0 请登录后投票
   发表时间:2006-12-25  
它就是在event上作文章.
saveEventListener[i].onSaveOrUpdate(event);
return event.getResultId();//这就是save返回的对象
所以俺说没返回值不一定不好测试,你可以通过判断某些对象(如event)的值来达到相同目的.

0 请登录后投票
   发表时间:2006-12-25  
BirdGu:
当然,我现在也是在Swing 中进行试验。
0 请登录后投票
   发表时间:2006-12-25  
我看了一下Hibernate 的实现,再研究一下......
0 请登录后投票
   发表时间:2006-12-25  
BirdGu: 可有联系方式,可以留下吗?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics