以流程设计为向导的现实代码(引以为戒!)

原创 2007年09月11日 16:42:00
我在上一篇blog中写了以流程为向导和以数据为向导的设计,有点抽象。今天在检查客户提出的一个性能问题时,发现这个问题的根源其实就是以流程为向导的设计导致的。出于保密的考虑,我下面用伪代码的形势把那个设计表现出来。

在客户的框架中,提供了一个接口方法:
public Customers[] SearchCustomers(string ids);
这个方法的调用会消耗较多的时间。客户在他们的跟踪器中发现在一个查询操作中,这个方法被调用了两次。显然如果改进设计,让它只被调用一次,会对系统的性能有很大的提升。

如果从流程的角度来考虑,这种设计是合理的。
private void LoadObjects()
{
.........................

CommonUtility.CheckClientInfo(clientIDs);//这是一个静态方法,用于检查customer信息

CheckClientOnView(res);//这是一个成员方法,用于检查 customer在当前实例中的状态。

............................
}

上面两个方法中,都调用了SearchCustomers方法。
为什么说上面这段代码是以流程为向导,因为customer数据本身并没有方法来维护其状态,customer状态的判断是以流程的要求来设计的。即业务流到哪里,对customer数据状态的判断就到哪里。这样,获取两份customer数据来判断是完全合理的。

但实际上,这种设计代码来很多的问题,上面就是其中的一种。

关于这个问题,我很希望能够和更多的朋友讨论。我是一个很认真的程序员,我很希望把这个问题搞清楚
联系QQ:64528619;MSN:czy@vip.163.com

以流程为向导与以数据为向导

如何区别在系统设计中,以流程为向导还是以数据为向导。以流程设计为向导的设计有一个很大的特点,业务逻辑的实现以流程为中心,在流程中,将系统中的实体以数据的方式对待; 以数据为中心的设计的特点为,设计以系...
  • firefox1
  • firefox1
  • 2007年09月05日 11:05
  • 605

以目标为导向的需求工程建模方法:KAOS

KAOS是一个可用于需求分析和需求工程建模的方法。可以使用http://www.objectiver.com 这个工具来进行建模。 下面以一个购物网站为例,来看一下如何使用KAOS建模。...
  • gaoxie4042
  • gaoxie4042
  • 2017年01月05日 22:41
  • 337

C#设计的一个向导程序(Wizard)框架

  在现实的软件中,经常可以看到一些向导(Wizard)的存在,如何给自己的应用程序实现一个向导呢?下面给出一个使用面向对象的思想设计出来的应用程序向导框架,虽然很简单,但希望能给人帮助。      ...
  • snlei
  • snlei
  • 2009年04月01日 23:29
  • 3173

如何设计一个优秀的向导式界面(Wizard)

软件界面设计中的“向导式界面”这个术语翻译自英语中的“Wizard”一词。大部分字典上对于Wizard的解释是男巫、奇才的意思。不过从其用途来看,似乎向导的译法更加形象。向导,顾名思义,就是能带领或指...
  • lianchao668
  • lianchao668
  • 2013年01月29日 14:02
  • 708

无法安装打印机驱动 打印机安装向导无法启动 不响应

第一种方法:我的系统是用GhostXP安装的,某天突然需要安装打印机驱动程序,无论怎么双击"添加打印机"图标也没有反应,后来尝试通过"添加硬件"的方法来安装,也是提示"找不到对应的应用程序"而无法安装...
  • LightJie
  • LightJie
  • 2010年03月10日 18:38
  • 6834

前车之鉴,引以为戒

世界上最聪明的人是借用别人撞得头破血流的经验作为自己的经验,世界上最愚蠢的人是非用自己撞得头破血流的经验才叫经验                                           ...
  • lixueru0819
  • lixueru0819
  • 2012年04月08日 08:28
  • 1011

搜索引擎设计实用教程(2)-以百度为例

/*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/搜索引擎设计实用教程(2)-以百度为例   之二:Spelling Checker拼写检查错误提示(以及拼音提示功能)    ...
  • malefactor
  • malefactor
  • 2005年11月26日 15:33
  • 7239

简单app开发之Guide(向导)界面

简单app开发之Guide(向导)界面
  • CrossFile_TMS
  • CrossFile_TMS
  • 2016年11月26日 01:06
  • 254

VS2010 win32项目windows窗体程序 向导生成代码解析

Win32项目的windows窗体程序的向导生成了如下代码: // Timer.cpp : 定义应用程序的入口点。 // #include "stdafx.h" #include "Timer.h...
  • qq2399431200
  • qq2399431200
  • 2013年09月15日 20:55
  • 2001

js写的一个html游戏向导模块

依旧是最近的一个游戏
  • cql342624757
  • cql342624757
  • 2014年05月01日 23:24
  • 1110
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:以流程设计为向导的现实代码(引以为戒!)
举报原因:
原因补充:

(最多只允许输入30个字)