关于Jive中的迭代器与代理模式

    在jive论坛中,批量显示数据库对象使用的是迭代器,DatabaseObjectIterator实现了迭代器,是对所有数据库对象的迭代器封装,包括Forum、Thread、Message、Group、User。而IterratorProxy是对于真实的迭代器的又一层代理封装,这层封装在原来的迭代器的基础上又添加了一层权限的控制。

如登陆后看到的所有论坛页面来所,对于论坛的访问代码如此:

for (Iterator iter=myEnv.getForumFactory().forums(); iter.hasNext();) {
                Forum forum = (Forum)iter.next();
                String forumName = forum.getName();
                if (forumName.length() > 18) {
                            forumName = forumName.substring(0,18) + "..";
                }

    }

看到myEnv.getForumFactory().forums()的代码,首先去看ForumFactoryProxy中forums的代码,如下:

 {

return new IteratorProxy(JiveGlobals.FORUM, factory.forums(),
                authorization, permissions);

}

其中factory.forums()的结果是一个论坛对象的迭代器,最后代码如下:

return new DatabaseObjectIterator(JiveGlobals.FORUM, forums, this);

所以myEnv.getForumFactory().forums()可以这样解释:

1 先得到所有的论坛ID

2 用所有的论坛ID集合形成迭代器

3 对以上形成的迭代器加入权限控制,形成添加了权限控制的迭代器。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值