快速业务通道

Java中的模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

Java中的模式

时间:2010-07-19

世上一直有一个神话:设计可以并且应该独立于实现的细节,设计通常被看作是一个抽象的概念而实现是一个代码的具体实例。如果我们坚信"设计是一个富有创造性和目的性的活动:为某一个目标而精心制定的结构的概念,",一个结构如果不能够说明它的环境,或者不能与环境协作,那么这个结构就不适合这一目标。环境中包括目标平台--语言、工具、库、中间件(middleware),等。还有它的功能性和非功能性的单元。

我们会认为在不知道地形布局的时候设计房屋,或者在不清楚使用的道材料的时候建造摩天大厦是不合理的事情。我们将线程、分布这类概念看作为小的编码的细节的看法无疑是在设计中导致浪费精力(时间和金钱)的导火索,最终我们发现的是理论与实践的差距在实践中要比在理论中还大。虽然在一些情况下一个高层次设计的某部分可以在许多技术下保持不变,但是更多的情况是我们需要亲自来补足这个圆圈,允许(甚至鼓励)细节和实际的信息来影响并告知系统的结构。

模式(Patterns)的作用就是获取这些结构上的信息。它们可以描述--预见性的或回顾性的--设计和设计的原理,讲述从问题到解决,说明环境,获取工作的动力以及应此产生的结果。这里,我将集中讲述两个模式--Command-Query Separation和Command Method--为一个类接口中的方法分配任务,考察他们如何互相作用并影响并发的、分布的和有序的环境以及本地执行。

接口设计。顾名思义,接口提供了不同系统之间或者系统不同组件之间的界定。在软件中,接口提供了一个屏障,从而从实现中分离了目标,从具体中分离了概念,从作者中分离了用户。在Java中,有许多接口的概念:public部分为潜在的用户提供了类和方法的接口,protected部分为它的子类(subclass)以及周围的包提供了一个接口;一个包有一个公用的部分;反射(Reflection)是另外一种提供、使用对象方法接口的机制。

约束及供给。站在用户对作者的角度,一个接口建立并命名了一个目的模型的使用方法。类接口中的方法提供了一种特殊的使用方法。是这些约束--编译时的类型系统,运行是的异常机制及返回值--使得类作者的目的得以体现和加强。在这方面最简单的例子是对封装的意义的理解:私有化可以保证类用户只可以通过类的公用方法接口来操作信息和行为。

然而,对于封装来说,远不止数据私有那么简单。在设计中,封装往往会涉及到自我包含(self-containment)。一个需要你知道如何调用一个方法(e.g."在一个线程的环境中,在一个方法调用后调用另一个方法,你必须明确地同步对象")的类的封装就不如将所有这些全部包含并隐藏的类(e.g."这个类是thread-safe的")好。前一个设计存在着设计的漏洞,它的许多限定条件是模糊的而不是经过加强的。这就把责任推给了用户而不是让类提供者做这些工作来完成类的设计,并且,这是不可避免的漏洞百出。

在这种情况下,供给(affordances)描述了使用的可行性和不可行性。

术语供给(affordances)指事物的被感知的真实的属性,首先,这些属性可以决定事物的使用的可能方法。一个椅子可以用来支撑其他东西,所以,可以坐人。一个椅子照样可以搬运(carried)。玻璃可以透光,也可以被打碎……

供给提供了对事物操作的线索,板状物可以压、柄状物可以旋转,沟状物可以插入东西。球状物可以扔或者反弹。当使用了供给的优势后,用户可以只通过看便确定该做什么:没有图、没有标签也没有说明。复杂的事物可能会需要一些解释,但是简单的事物不应该这样。当简单的东西也需要用图片、标签来说明的时候,设计就是失败的。

类设计者的一个职责便是在接口中减小约束与供给之间的隔阂(gap),匹配目标

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号