社区
Java
帖子详情
有个设计模式的问题向各位求解!
mycafe
2004-11-22 10:08:19
1.有100个人和50个文件,每个人负责其中一份文件的管理,
2.每份文件都有自己的某些操作属性,比如增删改(但每个文件的全部操作不同,有的有增删没有改)
3.每个人对自己所管理的那份文件设置操作权限(在文件的全部操作属性中选择)
简单描述就是: 人 * --- 1 文件; 文件1 -- * 操作
问题就是,如何将人与操作建立关联? 人与操作的关联表(权限)该如何设计?
...全文
182
4
打赏
收藏
有个设计模式的问题向各位求解!
1.有100个人和50个文件,每个人负责其中一份文件的管理, 2.每份文件都有自己的某些操作属性,比如增删改(但每个文件的全部操作不同,有的有增删没有改) 3.每个人对自己所管理的那份文件设置操作权限(在文件的全部操作属性中选择) 简单描述就是: 人 * --- 1 文件; 文件1 -- * 操作 问题就是,如何将人与操作建立关联? 人与操作的关联表(权限)该如何设计?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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。
C++
设计模式
|结构型 适配器模式
可以将⼀个类的接⼝转换成客户希望的另⼀个接⼝,主要⽬的是 充当两个不同接⼝之间的桥梁,使得原本接⼝不兼容的类能够⼀起⼯作。2. 适配器模式的组成(1)接口类,给客户端调用;(2)被适配者类;(3)适配器类。3.适配器模式的分类适配器模式一般分为类适配器模式和对象适配器模式。(1):适配器类通过继承适配者类(多重继承),达到适配目的,部分语言可能不支持多重继承(如C#)。(2):适配器类中存放适配者类的实例对象,调用它来达到适配目的,该模式较常用。下面的题目我们使用第二种类型来进行
求解
。
三种方法详解斐波那契数列
本文同步.md文件,在展示上会有些许
问题
原始版本在语雀平台。请各位移步查阅。 代码保存在码云平台供有需要者下载阅览。 创作不易,你的点赞就是我最大的动力。 斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(
码农多年后的个人总结,干货满满,入口甘甜~
本文不是技术文,是个人的从业总结。且对象是指大部分人, 文章各要点简洁,相信各位看官不会很累。(我写的很慢,所以你们看的也就不会很快,就不会很累)
《剑指Offer》题目总结(持续更新)
技术面试,除了良好的情商外,需要注意的有以下的几点: 扎实的基础知识 高质量的代码 清晰的思路(画图让抽象
问题
形象化,举例让抽象
问题
具体化,分解使复杂
问题
简单化)、 优化效率的能力 优秀的综合能力 反问环节推荐话题:与应聘职位或者项目相关的
问题
,需要事先对应聘的岗位和或者项目的背景有一定的了解,或者是临场发挥,从面试官刚才的话题中抽出
问题
提问. 高质量的代码 题67 将字符串转化为整数. 这道题看上去不费吹灰之力就可以完成,但本题的主要考察点在于:能否预判空指针或空串(这也是其他题目经常要进行判断的步骤
程序员面试题分享,掌握八成便可BAT一试!
最近,笔者在Github上看到了一个非常有趣的项目,来自一位谷歌软件开发工程师的分享,主要讲述了他是如何从一名web开发者蜕变为谷歌软件开发工程师的,这一路走来,他都看了哪些书籍,哪些视频和哪些面试题,只可惜虽然作者给了链接,但部分内容在国内还是无法访问。 (由于此处不便分享链接,所以对该项目感兴趣的可以在Github上搜索coding-interview-university,然后选择中文版本...
Java
51,408
社区成员
86,098
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章