关于数据过滤的设计

10-05-31 aaronbamboo
比如有一个接口,查询所有的设备queryAllDevice.

现希望对查询得到的设备关于区域进行过滤,是否可以考虑用代理模式加以解决?

         

1
banq
2010-05-31 12:45
可以使用代理模式,更细节一点,使用specification规格模式来实现,具体可查查相关资料

aaronbamboo
2010-05-31 14:01
再问一下banq老师,一般像这样角色与区域相关的权限模型,是做成资源管理方式,在数据库层就直接过滤掉,还是在中间业务层做过滤比较好呢?

[该贴被aaronbamboo于2010-05-31 20:52修改过]

aaronbamboo
2010-05-31 19:50
刚才说的不是很明白,其实这样的应用很常见。假设用户a和用户b都是项目经理的角色,a是A区域的项目经理,b是B区域的项目经理。那么a在登入系统后只能看到A区域的所有单项工程,而b当然只能看到B区域的所有单项工程。

这样的功能,以前我做过的一个项目是这样做的:a,b用户都赋予项目经理的角色;把A区域和B区域下的单项工程作为资源来看待,a用户对A区域下的资源享有项目经理的权限;同样b用户对B区域下的资源享有项目经理的权限。

当然,由于资源太多,如果把每个单项都和用户来关联的话,效率比较低,可以引入资源树,通过分层来减少关联,通过继承得到关系。这是从做框架的角色来考虑的,不过这样的关系会比较复杂。

不知道,大家都是怎么来处理这类问题的呢?

aaronbamboo
2010-06-01 11:01
刚学习了一下规格模式,发现其实平时都有遇到过。Hibernate的Restrictions就是一个很好的例子。但是对它应用场景的解释“业务规则不适于放在任何已有实体或值对象中,而且规则的变化和组合会掩盖那些领域对象的基本含义”不是特别理解。

猜你喜欢