发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA
1 2 下一页 Go 2

嗨,想在模式上简单些,却弄巧成拙,请进给点意见。

2003-01-14 01:07
赞助商链接

最近帮同学搞个东西,因为功能不复杂,而且权限也简单,就三种,游客,USER,ADMIN.所以我想用不着JIVE那么复杂得模式(至少是权限模式)。
设计中有一个类FACTORY,我把它做成APPLICATION BEAN,作用很明显,用来生成和删除USER,FORUM,返回FORUMIterator等。注意,(没有设计成接口,直接实现)。然后我做了一个SESSION BEAN叫 USERBEAN ,里面保存登陆时设置的权限,里面的方法调用USER,FORUM里面的方法操作他们,这样我在调用他们之前就可以判断此用户有没有这个权限,但问题还是来了,USERBEAN里面可以
public void editUser(name,age,……,user) throws permissionExcption
{
if(type == ADMIN)
{
user.editUser(name,age,……);
}
else
{
throw new permissionException();
}
}
但是在FACTORY里面的方法deleteUser也要有权限限制,这下就感觉很不爽了, 会在同个页面中出现这样的调用:
USER = FACTORY.GETUSER(ID);
…………………………………………
USERBEAN.EDITUSER(NAME.AGE,……,USER);
………………………………………………
FACTORY.DELETEUSER(USER,USERBEAN.GETTYPE())//判断权限必须传入
这样调用感觉很乱啊,当时设计就是为了判断权限时方便,而现在看来,感觉它没有完成任务,而又要传到FACTORY里面判断,有点乱啊,当然,怪我当时没想好,但现在改有点来不及了,我想在此基础上做最大的保留,而对这种混乱的局面做个调整,不知道大家有什么建议?或者说保留现在的做法没有关系??
请大家指点,有什么没说清楚,我马上解释,谢谢。
本人设计系统经验不足,大家该骂就骂,该打就打……:)

2003-01-14 10:16

jive中的权限模式是最简单的,比较实用的,拓展性不好罢了,但是有时够用就可以

2003-01-17 09:16

感觉你的代码怪怪的:)

你用了sessionbean为什么不用实体bean?

而且factory是生成对象的地方,为什么要加上deleteUser?

我觉得你应该做一个专门的权限类,而不是每个方法里都判断一把,个人愚见:)

2003-01-17 10:18

你好fuzhou :

的确,我的代码我也觉得怪怪的这也是我提问的原因,说到底,就是我在当初设计的时候考虑不周到,权限设计不好.本来希望,那个SESSIONBEAN能解决权限问题,每人登陆后保存他们的权限信息.但结果发现FACTORY里面也要权限管理,所以就有点乱了.你说的实体BEAN是EJB里面的吧,这就很不好意思了,本人水平不高不,会那个.我认为FACTORY应该有删除他创造东西的功能,这样更合理,FACTORY应该有生杀大权才对啊,要不在哪杀啊,JIVE里也是这么做的.
至于权限,我说过了,是为了省事,所以没有像JIVE一样.(现在看来不合理)
哈哈.
不想做太大更改了,时间有限.
我以上说的对吗? 请指教

2003-01-20 10:27

基本正确,但是我觉得:FACTORY应该有删除他创造东西的功能
说得有一定道理,其实只是负责生产产品,如果我们不要这个产品,就不要从Factory中取就可以了,或者在我们代码的
Product product = Factory.getProduct()后面加上
product=null;就可以了。

其实你可能是另外一个意思,一个东西如果需要删除功能,那意味着是另外一个创建型模式:Builder模式了。

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com