1 / 12
文档名称:

设计模式分解java 四.ppt

格式:ppt   大小:129KB   页数:12页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

设计模式分解java 四.ppt

上传人:xxq93485240 2019/1/26 文件大小:129 KB

下载得到文件列表

设计模式分解java 四.ppt

相关文档

文档介绍

文档介绍:设计模式分解java四我们继续结合Jive谈入深一点,下面要涉及到工厂模式了,如果你不了解工厂模式,请看设计模式之Factory 我们已经知道,使用Forum需要通过ForumProxy,Jive中创建一个Forum是使用Factory模式, 有一个总的抽象类ForumFactory,在这个抽象类中,调用ForumFactory是通过getInstance()方法实现, 这里使用了Singleton(也是设计模式之一,由于介绍文章很多,我就不写了,看这里, getInstance()返回的是ForumFactoryProxy. 为什么不返回ForumFactory,而返回ForumFactory的实现ForumFactoryProxy? 原因是明显的,需要通过代理确定是否有权限创建forum. 在ForumFactoryProxy中我们看到代码如下:lassForumFactoryProxyextendsForumFactory{ protectedForumFactoryfactory; protectedAuthorizationauthorization; protectedForumPermissionspermissions; publicForumFactoryProxy(Authorizationauthorization,ForumFactoryfactory, ForumPermissionspermissions) { =factory; =authorization; =permissions; }阅郭短林堵伐榷跃风懒碟睹宇掌泽祖般陪幻旷稼媳碴呢魔昆砧裹阁绷磨始设计模式分解java四设计模式分解java四publicForumcreateForum(Stringname,Stringdescription) throwsUnauthorizedException,ForumAlreadyExistsException { //只有系统管理者才可以创建forum if(()){ ForumnewForum=(name,description); returnnewForumProxy(newForum,authorization,permissions); } else{ thrownewUnauthorizedException(); } }咳宾说绊拘币叠极悸语馒逊弥们渐亢招熊唾越操松外械气卑额阉琼莲藤镁设计模式分解java四设计模式分解java四方法createForum返回的也是ForumProxy,Proxy就象一道墙,其他程序只能和Proxy交互操作. 注意到这里有两个Proxy::使用Forum和创建Forum; 至于为什么将使用对象和创建对象分开,这也是为什么使用Factory模式的原因所在:是为了"封装""分派"; 换句话说,尽可能功能单一化,方便维护修改. Jive论坛系统中其他如帖子的创建和使用,都是按照Forum这个思路而来的. 以上我们讨论了如何使用Proxy进行授权机制的访问,Proxy还可以对用户隐藏另外一种称为copy-on-write的优化方式. 拷贝一个庞大而复杂的对象是一个开销很大的操作,如果拷贝过程中,没有对原来的对象有所修改, . 比如:我们有一个很大的Collection,具体如hashtable,有很多客户端会并发同时访问它. 其中一个特别的客户端要进行连续的数据获取,:使用collection的lock,让这特别的客户端获得这个lock, 进行连续的数据获取,然后再释放lock. publicvoidfoFetches(Hashtableht){ synchronized(ht){ //具体的连续数据获取动作.. } } 但是这一办法可能锁住Collection会很长时间,这段时间,其他客户端就不能访问该Collection了. 第二个解决方案是clone这个Collection,然后让连续的数据获取针对clone出来的那个Collection操作. 这个方案前提是,这个Collection是可clone的,而且必须有提供深度clone的