有个设计模式的问题向各位求解!

mycafe 2004-11-22 10:08:19
1.有100个人和50个文件,每个人负责其中一份文件的管理,

2.每份文件都有自己的某些操作属性,比如增删改(但每个文件的全部操作不同,有的有增删没有改)

3.每个人对自己所管理的那份文件设置操作权限(在文件的全部操作属性中选择)

简单描述就是: 人 * --- 1 文件; 文件1 -- * 操作

问题就是,如何将人与操作建立关联? 人与操作的关联表(权限)该如何设计?
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
launch401 2004-11-22
  • 打赏
  • 举报
回复
刚才理解错了,这个可以用observer模式:

在文件类中维护每一个Operation是否enbale的map,可以在这上面修改每个文件所拥有的操作权限范围;还要维护一个Person的数组,表示这个文件有哪些owner。

然后当map发生变化时,立刻通知Person数组的每一个Person。Person类中维护一个每一个Operation是否对用户可用的boolean数组。当接到通知后就要更改这个boolean数组。当然,Person中也提供对这个数组的操作以实现每个人的操作权限的设置。

总之,FileClass就是subject,Person就是observer,具体实现有很多变形了。

class Person{
FileClass f;
boolean[] list;
}

interface Operation{
...
}

class FileClass{
Map map;//operation|enable
Person[] ps;
}
mycafe 2004-11-22
  • 打赏
  • 举报
回复
说白了这就是个穿透两个层次的关联关系,

就是,人,在指定文件的操作范围内,设置自己的操作权限。

楼上的代码搞不定,再说我也不是java代码的问题,

人 * --- 1 文件; 文件1 -- * 权限 分别实现都很容易,但是再由 人 * -- * 权限的问题,

我希望每个文件的操作权限范围可设置,每个人的操作权限可设置。
launch401 2004-11-22
  • 打赏
  • 举报
回复
class person{
FileClass f;
}

class FileClass {
boolean canAdd();
boolean canDelete();
boolean canModify();
}
launch401 2004-11-22
  • 打赏
  • 举报
回复
更正一下,Person中应该维护一个map而不是boolean数组,
class Person{
FileClass f;
Map map1; //operation|useable
//这个map中的所有operation一定是enbale的。
}

当Person收到FileClass更改的通知时,根据FileClass中map的值来增删map1中的pair。

50,550

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧