动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.您的 Java 代码安全吗.
.用XSLT 和 XML改进Struts.
.加法运算符 (+).
.Vector还是ArrayList这是个问题.
.(10)CDC API.
.Java名词解释.
.Eclipse远程调试Weblogic运行的源.
.310-025 Braindumps.
.开发Java系统程序员要注意的基本.
.FlashLite与J2ME的全方位分析比较.
.Java语言中两种异常的差别.
.EJB最佳实践:实体bean保护.
.Java开发为什么需要UML?.
.Java访问Access的一般方法介绍.
.用Java访问XML数据的简单起步.
.Spring Framework中的AOP编程之入.
.Eclipse插件开发之EasyExplorer.
.Java走下神坛之同步代码等同于断.
.Java智能卡基础篇—未来Java平台.
.动态图文结合.

Java中的模式(1)

发表日期:2008-1-5 |



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

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

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

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

   约束及供给。站在用户对作者的角度,一个接口建立并命名了一个目的模型的使用方法。类接口中的方法提供了一种非凡的使用方法。是这些约束--编译时的类型系统,运行是的异常机制及返回值--使得类作者的目的得以体现和加强。在这方面最简单的例子是对封装的意义的理解:私有化可以保证类用户只可以通过类的公用方法接口来操作信息和行为。
   然而,对于封装来说,远不止数据私有那么简单。在设计中,封装往往会涉及到自我包含(self-containment)。一个需要你知道如何调用一个方法(e.g."在一个线程的环境中,在一个方法调用后调用另一个方法,你必须明确地同步对象")的类的封装就不如将所有这些全部包含并隐藏的类(e.g."这个类是thread-safe的")好。前一个设计存在着设计的漏洞,它的许多限定条件是模糊的而不是经过加强的。这就把责任推给了用户而不是让类提供者做这些工作来完成类的设计,并且,这是不可避免的漏洞百出。

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

   术语供给(affordances)指事物的被感知的真实的属性,首先,这些属性可以决定事物的使用的可能方法。一个椅子可以用来支撑其他东西,所以,可以坐人。一个椅子照样可以搬运(carried)。玻璃可以透光,也可以被打坏……
   供给提供了对事物操作的线索,板状物可以压、柄状物可以旋转,沟状物可以插入东西。球状物可以扔或者反弹。当使用了供给的优势后,用户可以只通过看便确定该做什么:没有图、没有标签也没有说明。复杂的事物可能会需要一些解释,但是简单的事物不应该这样。当简单的东西也需要用图片、标签来说明的时候,设计就是失败的。

   类设计者的一个职责便是在接口中减小约束与供给之间的隔阂(gap),匹配目标以及一定程度上的自由度,尽可能减小错误使用的可能。

   对环境敏感的设计。在空间或者时间上分离方法的执行--例如,线程,远程方法调用,消息队列--能够对设计的正确性和效率产生意义深远的影响。这种分离带来的结果是不可忽视的:并发引入了不确定性和环境选择的开销;分布引入了错误的和不断增加的回程的调用开销。这些是设计的问题,而不是修改bug那样简单。
   无论是在何种情况下,结果都是将会阻碍所有权风格的程序设计(Property-Style Programming)--当一个接口主要由set和get方法组成的时候,每个方法都相应的直接指向私有区域。这样的类的封装很差(意思是毫无遮掩)。接口中的域访问器(Field Accessors)通常是不会提供信息的:他们在对象的使用中不能通讯、简单化和抽象化,这通常会导致冗长并易出现错误的代码。所有权风格的程序设计在短时间内不是一个大的活动。分布和并行通过引入了正确性和严重的性能开销放大了这些格式上实践的问题。

   透明度和bug灾难。抽象答应我们在必要的时候可以忽略细节,所以我们的设计思想可以平衡环境的因素而不是受制于它们。决定什么样的细节可以忽略便成为一个挑战。问题的严重性在重要的细节别忽略的情况下上升了。
设计往往会尽量使环境因素尽可能的透明。透明能够成为一个诱人的主意:也许它可以让线程和远程对象通讯完全透明,这样用户在进行对象通讯的时候什么也不会觉察到。Proxy模式支持一定程度上的透明度。这加强了RMI和COBRA的基础。本地的代理的对象和使用远程的对象在使用中具有相同的接口,并且编组上的细节答应调用着使用熟悉的方法来调用模型。然而,这种分布透明并不完全:失误和潜在的影响,不能被完全隐藏并且需要考虑。究竟透明不是毛巾。

上一篇:Java中的Big/Little问题 人气:494
下一篇:java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子 人气:554
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号