一直挺喜欢J道的风格,虽然极端,但是极端的可爱,喜欢这边的OO。我一直希望能用纯OO的东西设计出属于自己的一套系统,——当然,我的经验实在不足以完成这样的想法。但是,总得要有行动啊,没有行动只能算是空想,即使能力不够,也要通过实践才能知道需要补充学习哪一方面的知识。于是,就决定从基础模块做起,比方说权限管理。这个话题属于老生长谈了,随便网上一搜都有一大堆的东西。
看了很多,但多数围绕数据库建表来设计,即使我所在的公司,系统权限这部分的设计也是围绕着数据库来做的。因此数据库的思维限制了在面向对象这方面的拓展,我一直不知道如何下手。希望能得到J道达人的指点。
我讲的权限系统只包括功能权限,数据权限这部分我认为应该属于业务系统范畴。因此我认为应该可以提炼出一套相对容易移植的权限系统。
我打算以RBAC的设计理念来设计。
我们知道,RBAC中的R指的是Resource,也就是资源,如果用数据库方式去做的话,很容易就可以设计出来,一张Resource表(ResourceId,ResourceName,ParentResourceId,TreeRelation),一张Permission表(PermissionId,ResourceId,Permission,PermissionName),一张Role表(RoleId,Role,RoleName),一张Role_Permission表。这种设计很容易就可以想到,但这并不是我想要的。我希望能通过面向对象的方式来设计,也就是说,我们首先应该谈的是Resource类如何设计、Role类如何设计、Permission类如何设计,怎样在类当中体现出它们之间的关系,当然如果只是纯粹的POJO类,我觉得还不如用数据库设计来得直观。
比方说,Role类中是否应该包含这么一个方法:public boolean hasPermission(Permission p);可是由于这方面的知识实在有限,而且有没有可以借鉴的系统。凭空想象,实在很郁闷。
希望能得到各位J道达人的指点!
先谢谢各位了!
[该贴被snow0613于2009-04-25 22:43修改过]