关于分层

09-03-21 qqggcc
我们都讲到MVC分离,可是分层确实是很难做到的

如页面上数据的现实问题,这些显示当然是业务层的体现,不可能脱离业务层,现在业务层要求能对显示层的控制就是根据不同的用户显示不同的结果,而这个结果是一个可选的,如同一个业务逻辑有的要显示10个数据项,有的只需要现实6个数据项,我们是在业务层只提供6个数据项还是提供10个数据项?如果是这样,那么业务层就要去处理V层的数据控制,还是统一提供10个数据项由V层去控制显示的数据?那么V层显然还要去业务层获取显示控制的信息。

所以不管怎么样都无法彻底的切割开来。是不是我的显示层还要分一个MVC出来啊?

同时由于OO的思想主要定义有相同的行为和规范,但是对元数据级别的问题就不好解决

freebox
2009-03-21 15:06
假设一个域对象有20个数据项,当然要建一个20个数据项的对象才能保证完成所有领域作业,不能因为有时只能给某特定用户提供一个子集就只建一个子集对象,除非这个子集对象也能代表领域并能够完成所有自身相容的作业。否则这个对象最多只能算一个组合对象的一部分。

假设角色A需要操作2--7这六项,角色B需要操作11--20这十项。

当然客户得先决定哪些东西能操作哪些不能,这样就可以建立一个对应,角色A和B分别对应一个对象的数据项列表,然后根据角色利用反射控制对这些域的操作,只要遍历特定角色对应的数据项列表,不让访问的数据项掷出异常就行了。

但是看您的描述,像是不必要这样控制,只要控制显示结果就够了。那样只要单纯在页面控制,典型的像springSecurity这种就有这样的标签

ifAnyGranted role="ROLE_EMPLOYEE"

ifAnyGranted role="ROLE_BOSS"

先决定好角色并划分,用户拥有哪种角色,在某页面自然就显示哪些数据,显示哪些当然是预先定义好的,或者当加减显示域后更改Security标签控制的内容。

或者安排不同角色的用户有不同可访问页面,加减显示域之后修改那些页面。

猜你喜欢