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

关于jive中ForumFactory.getInstance()的困惑

2003-07-25 09:55
赞助商链接

下面是java模式的一篇文章中所说:
“我们已经知道,使用Forum需要通过ForumProxy,Jive中创建一个Forum是使用Factory模式,有一个总的抽象类ForumFactory,在这个抽象类中,调用ForumFactory是通过getInstance()方法实现,这里使用了Singleton(也是设计模式之一,由于介绍文章很多,我就不写了,看这里),getInstance()返回的是ForumFactoryProxy.”

我感觉ForumFactory.getInstance(authorization)方法中好像不是Singleton模式,因为最终返回的是new ForumFactoryProxy(authorization, factory, factory.getPermissions(authorization));每次都new一个新对象难道还是Singleton模式吗?

另外,对于相同的authorization,其实产生的ForumFactory是相同的,这里是否应该用享元模式呐?不必每次都产生一个新的ForumFactory对象。

请发表意见。我刚刚学习设计模式,请指教

2003-07-26 13:18

我也一样啊!好象返回的是一个代理,而不是一个ForumFactory,如果该论坛不存在则创建一个(factory = (ForumFactory)c.newInstance();
),最后是返回一个访问ForumFactoryProxy用以控制对唯一的ForumFactory对象的访问,不知道我的理解对不对哦。

2003-07-28 09:19

好像应该这样理解FormFactory.getInstance()方法
if (factory == null) {
String classname="DbForumFactory";
Class c = Class.forName(className);
factory = (ForumFactory)c.newInstance();
}
该方法中这部分使用了单例模式,也就是产生唯一的DbForumFactory对象。
但是整个方法的返回值却是一个新的FormProxyFactory对象。
给我感觉每次不必都返回一个新的FormProxyFactory对象,因为对于相同权限的用户(具有相同的authorization),得到的FormProxyFactory对象应该相同。这里是否应该把相同authorization的FormProxyFactory对象共享呐?好像是享元模式。请指教

2003-07-28 12:25

单态的目的是为了让FormFactory只有一个实例,至于返回了FormFactory的一个子类,可以看成它想实施一个动态代理,只是使用了这个简单的办法。

赞助商链接

赞助商链接

返回顶部

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