关于数据关联操作的设计模式,想和大家讨论下

haocxa 2004-10-19 08:56:18
在一个综合应用平台中,当对一个系统中比如用户表进行删除时, 可能需要根据其他系统的关联数据进行检验。 有关联的不能删除,或者需要进行相关的一些关联操作。

为了解决问题,通常是在删除用户信息时,加上很多其他业务逻辑的判断代码。 这样做,将使用户管理这个模块 还得加上很多其他业务模块的逻辑判断。做这一子系统的程序员还必须了解其他子系统的业务规则, 觉得不利于系统的松散藕合性的特点

我现在设想的一个思路是,在各业务模块间,设计一通用检验引擎,将相关业务逻辑判断及关联操作全封装在引擎中。 删除用户时只需要调用引擎的操作接口而不需要关心引擎内部的规则检验。 且引擎内部的规则可自定义。

大家在工作中,是用什么更好的设计模式来处理这样的问题? 还请多多回复啊。谢谢
...全文
152 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Liusp 2004-12-07
  • 打赏
  • 举报
回复
5555
UglyUgly 2004-10-26
  • 打赏
  • 举报
回复
呵呵,使用“依赖注入”实现。
UglyUgly 2004-10-26
  • 打赏
  • 举报
回复
我又一个更加自动化的方法,讨论一下。

每个业务模块可以有 多个 检验引擎,所有的检验引擎都继承同一接口。

当用户操作某个业务模块时也就是产生数据关联时就为该用户添加一条 检查该关联的检验引擎
的类名。当关联失效时删除它。

删除用户时 只需取出该用户所有的检验引擎类名,实例化它然后执行判断,都为true可删,反之
不可。

这样用户管理模块写好后不用再为检验作改动。
fantasyCoder 2004-10-20
  • 打赏
  • 举报
回复
想了一想,偶认为这样比较幽雅一点^_^
public abstract BaseCheck{

Set validatorSet = new HashSet(); //将你你要验证的模块的实例放入(有可能分属于不用的DAO)

void addValidator(SuperValidator validator);
void removeValidator(SuperValidator validator);

boolean check(String id);//循环这个Set,逐一验证
}

那么需要验证的类继承该类,可以随时装配你的验证规则
segl 2004-10-20
  • 打赏
  • 举报
回复
haocxa (haocxa) :
我在处理跟你类似,就是将所有本模块所用到的Validation放在一个类里集中管理,在做增删改时就可以对Validation里的方法进行重用。
shipp 2004-10-20
  • 打赏
  • 举报
回复
感觉:
装饰模式,处理另外的校验逻辑处理,解耦校验逻辑和基本的业务逻辑.
呵呵
tonypotter 2004-10-19
  • 打赏
  • 举报
回复
我觉得很好,上个星期我也是用类似的解决方案,处理了一个类似的问题
相关推荐
发帖
Java

4.9w+

社区成员

Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
帖子事件
创建了帖子
2004-10-19 08:56
社区公告
暂无公告