锁定老帖子 主题:隔离的领域层
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-25
//void onSaveOrUpdate(SaveOrUpdateEvent event)
在Event 中应该包括Action 的名称吧,它代表Domain 中的一个方法,它是Event 中的一个成员,我所说的业务操作是指这个Action 的名称。 使用进行反射时,很难进行单步跟踪。 因为Observer 模式中的Listener 是没有返回值的,也不应该有返回值,你举的例子只是一个简单的方法调用,而不是Listener。 我加了一个附件,里面有我的实现代码,您可以先看看。 |
|
返回顶楼 | |
发表时间:2006-12-25
俺是摘自DefaultSaveOrUpdateEventListener
Event 中可以有很多东东啊 session object; requestedId; entityName; entity; entry; resultId; 不应该只有字符串,完全可用多态(如strategy)等进行灵活的设计 俺这里不能下载,只能夸夸其谈,还望谅解. |
|
返回顶楼 | |
发表时间:2006-12-25
当然,里面是有很多东西的,我只是说其中的Action Name,这个Action Name 是业务层的方法(当然也可以采用映射),在进行重构时,字符串表示的方法是不能够被开发工具找到的。
|
|
返回顶楼 | |
发表时间: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); } |
|
返回顶楼 | |
发表时间:2006-12-25
我能理解你的意思,它是通过Event 的类型来区别具体的操作。
但是业务领域的操作是很难被抽象成各个不同的Event,所以必须使用字符来标识。 另外,它的fireSaveOrUpdate 方法也没有返回值,我不知道返回值在Hibernate 中是如何解决的。 例如:在添加对象时,我需要返回被添加的这个对象,它的fire 方法是如何实现的。 |
|
返回顶楼 | |
发表时间:2006-12-25
以前做网管软件的时候用过这样的模式,当时的客户端是用Swing的Rich client,用这种模式的目的是多客户端的数据同步。
在Web应用中这么做值得吗? |
|
返回顶楼 | |
发表时间:2006-12-25
它就是在event上作文章.
saveEventListener[i].onSaveOrUpdate(event); return event.getResultId();//这就是save返回的对象 所以俺说没返回值不一定不好测试,你可以通过判断某些对象(如event)的值来达到相同目的. |
|
返回顶楼 | |
发表时间:2006-12-25
BirdGu:
当然,我现在也是在Swing 中进行试验。 |
|
返回顶楼 | |
发表时间:2006-12-25
我看了一下Hibernate 的实现,再研究一下......
|
|
返回顶楼 | |
发表时间:2006-12-25
BirdGu: 可有联系方式,可以留下吗?
|
|
返回顶楼 | |