网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  使用设计模式改善程序结构(1)     
  文章作者:未知  文章来源:水木森林  
  查看:77次  录入:管理员--2007-11-17  
 
  使用设计模式改善程序结构(1)

设计模式是对特定问题经过无数次经验总结后提出的能够解决它的优雅的方案。但是,如果想要真正使设计模式发挥最大作用,仅仅知道设计模式是什么,以及它是如何实现的是很不够的,因为那样就不能使你对于设计模式有真正的理解,也就不能够在自己的设计中正确、恰当的使用设计模式。本文试图从另一个角度(设计模式的意图、动机)来看待设计模式,通过这种新的思路,设计模式会变得非常贴近你的设计过程,并且能够指导、简化你的设计,最终将会导出一个优秀的解决方案。

1、介绍

在进行项目的开发活动中,有一些设计在项目刚刚开始工作的很好,但是随着项目的进展,发现需要对已有的代码进行修改或者扩展,导致这样做的原因主要有:新的功能需求的需要以及对系统进一步理解。在这个时候,我们往往会发现进行这项工作比较困难,即使能完成也要付出很大的代价。此时,一个必须要做的工作就是要对现有的代码进行重构(refactoring),通过重构使得我们接下来的工作变得相对容易。

重构就是在不改变软件系统代码的外部行为的前提下,改善它的内部结构。重构的目标就是使代码结构更加合理,富有弹性,能够适应新的需求、新的变化。对于特定问题给出优美解决方案的设计模式往往会成为重构的目标,而且一旦我们能够识别出能够解决我们问题的设计模式,将会大大简化我们的工作,因为我们可以重用别人已经做过的工作。但是在我们的原始设计和最终可能会适用于我们的设计模式间的过渡并不是平滑的,而是有一个间隙。这样的结果就是:即使我们已经知道了很多的设计模式,面对我们的实际问题,我们也没有一个有效的方法去判断哪一个设计模式适用于我们的系统,我们应该去怎样应用它。

造成上述问题的原因往往是由于过于注重设计模式所给出的解决方案这个结果,而对于设计模式的意图,以及它产生的动机却忽略了。然而,正是设计模式的意图、动机促使人们给出了一个解决一类问题的方案这个结果,设计模式的动机、意图体现了该模式的形成思路,所以更加贴近我们的实际问题,从而会有效的指导我们的重构历程。本文将通过一个实例来展示这个过程。

在本文中对例子进行了简化,这样做是为了突出问题的实质并且会使我们的思路更加清晰。思路本身才是最重要、最根本的,简化了的例子不会降低我们所展示的思路、方法的适用性。

2、问题描述

一个完善的软件系统,必须要对出现的错误进行相应的处理,只有这样才能使系统足够的健壮,我准备以软件系统中对于错误的处理为例,来展示我所使用的思路、方法。

在一个分布式的网管系统中,一个操作往往不会一定成功,常常会因为这样或者那样的原因失败,此时我们就要根据失败的原因相应的处理,使错误的影响局限在最小的范围内,最好能够恢复而不影响系统的正常运行,还有一点很重要,那就是在对错误进行处理的同时,一定不要忘记通知系统的管理者,因为只有管理者才有能力对错误进行进一步的分析,从而查找出错误的根源,从根本上解决错误。

下面我就从错误处理的通告管理者部分入手,开始我们的旅程。假定一个在一个分布式环境中访问数据库的操作,那么就有可能因为通信的原因或者数据库本身的原因失败,此时我们要通过用户界面来通知管理者发生的错误。简化了的代码示例如下:


/* 错误码定义 */
class errorconstant
{
public static final int error_dbaccess = 100;
public static final int error_communication = 101;
}

/* 省略了用户界面中的其他的功能 */
class guisys
{
public void announceerror(int errcode) {

switch(errcode) {

case errorconstant.error_dbaccess:
/* 通告管理者数据库访问错误的发生*/
break;

case errorconstant.error_communication:
/* 通告管理者通信错误的发生*/
break;

}
}
}


开始,这段代码工作的很好,能够完成我们需要的功能。但是这段代码缺少相应的弹性,很难适应需求的变化。
(未完待续)
 
 
上一篇: eclipse插件管理小结    下一篇: 使用设计模式改善程序结构(三)
  相关文档
正则表达式语法 11-16
oracle数据库构造给据邮件跟踪查询系统 11-17
tomcat源码分析(启动框架) 11-17
关于cachedrowset的一篇文章(java.sun.com) 11-17
再谈java学习入门 11-17
new 运算符 11-16
java入门--漫谈java程序的性能优化 03-14
用jfreechart来生成统计图表 11-16
java基础:jsp和servlet中变量声明的方法 12-04
探索java应用程序的安全需求 11-17
java技巧:步入本地方法圣殿的七个步骤 11-17
j2ee综合--java企业系统架构的选择考量 03-04
jdk1.4非阻塞套接字api概述 11-16
java技术社区杂文 j2ee开发框架发展简史 04-11
用 正则表达式 判断一个简单的用户登陆的例子 11-17
在jsp环境中如何配置和使用fckeditor 03-25
java的本地化问题 11-17
爪哇语言工厂方法创立性模式介绍(上) 11-17
java中数组的返回 11-17
新手必读 Java中流的概念 03-25
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息