NoahWeb 什么是动作?
发布时间:2006-05-13 13:31:09 来源:noahWeb 网友评论 0 条动作是NoahWeb中极为重要的一个概念,浏览器与服务器一个完整的上下交互行程都可以理解成一个动作。
动作编程与以往的过程编程和对象编程是截然不同的一种编程思路。过程编程已经被某种意义上被淘汰在此就不做讨论,而动作编程与对象编程相比较,他们之间最大的区别在于“高度”的不同。
类、对象带给我们的面向对象编程可以让我们方便的在众多领域中进行复杂、高效的编程实现应用。每个有过对象编程学习经历的人在最初学习时也许都被问过“这个世界是由什么组成的?”通过这个方法以便让大家能直观的了解对象和类,而对象和类更可以让我们用最初认知的世界方式来理解和描述计算机中的各种功能和值。可是,对于网站、MIS或业务系统这些轻量级B/S架构的应用,对象编程也许并不是一种最好选择。
对于客户——程序结构设计重要还是流程设计重要?
类、对象提供了我们一种去描述计算机程序内各种能力和值的方式,可类、对象也是一种很“低级”的描述方式。
我们可以通过类和对象的方式来假设设计一个批发商买卖矿泉水的程序:
首先,您需要使用对象的方式描述水的各种属性和它具有的能力,而水是被装在瓶子里,所以对于装水的瓶子您也需要用类或对象的方式去描述一下瓶子的属性和能力,瓶子需要被装在箱子里,所以您也需要去用类或对象的方式去描述一下箱子……到此暂停!
回头看一下使用类和对象的时候我们在做什么?我们在进行对象之间的关系设计。而我们最初目的是什么?是设计一个批发商买卖矿泉水的流程。
看一下使用动作编程是怎么设计整个流程的:
订单确认—>出库—>装货—>送货—>收款
订单确认、出库、装货、送货、收款每个都是一个动作,而这些动作组合在一起构成了一个买卖矿泉水的动作流程。或许您还认为上述整个买卖矿泉水流程不合理应该是另一个更合理的流程。这样考虑就对了,因为您现在更多的时间已经花在为您的用户设计流程,而不是考虑设计整个类和对象之间的关系。
对于系统的用户我们为他考虑的不应该是程序结构方面的设计,而应该更多的是流程方面的设计。在使用动作方式后,您关注的不再是类和对象之间的关系,而是整个流程的设计。
一级还是多级?
我们还是继续来看批发商买卖矿泉水的流程设计,对象编程时,水和瓶子之间是存在关系,瓶子和箱子之又存在关系,再往上设计,或许还有批发商对象,买卖矿泉水的这个行为是由箱子这个对象来具备的,如下图所示:

这使整个系统对象有了三级的层深。是不是所有系统我们都需要把对象之间的关系弄的那么复杂?我们看一下用动作来设计时的情况:

用动作来设计时,批发商、箱子、瓶子、水或乃至货币在整个流程中仅是以一种资源的形式存在着。水就水、瓶子就是瓶子、箱子就是箱子,他们之间有是一种平面的关系,而没有层级关系。资源存在的目的是为动作去服务,资源之间没有层也没有级的概念,资源可以同另一个资源有关系也可以依赖别的资源,但是这些关系仅是为了完成这个动作而存在。
类和对象虽然可以让我们去描述这个世界的组成,可是类和对象不能让我们去很好的描述一个事物流程,在编写轻量级的应用时,如同现实世界中我们希望从某一个地方到达20公里外的另一地方一样,我们并没有必要为此去研究汽车的各种组成、研究发动机原理、研究圆周率,研究铺路等等这一切世界的物质构成,我们仅仅是需要去那一个20公里外的地方,您所做的只是需要抬手去打一辆车,并且告诉司机您想去的地方。汽车、自行车、飞机、公路、发动机等等这一切对于您仅是一种资源,他们仅是为您而存在。您所要做的仅是去使用他们。
出租车和其他我们常见的东西,如浴缸,这些已存在的对象我们没必要再去定义一次,就如同现实里您想去某个地方时您会去打一辆出租车,而不是坐进一个浴缸里,在这我们已经没必要再用对象和类的方式来区别出租车和浴缸,他们有他们固然存在的对象构成方式,那是科学家或是工程师才有必要去考虑的,而在您使用他们的时候出租车就是出租车,浴缸就是浴缸。世界是由对象来组成,而动作才是去驱动这个世界运转的。
NoahWeb中的动作
稍稍了解历史的人都知道,金字塔是世界奇迹之一。除了外形之谜,建造之谜以外,很奇怪的是,整座金字塔虽然使用石块垒起,但每块石头之间却没有丝毫的粘结物质。换句话说,如果你从塔顶上将石头一块一块往下搬,从理论上讲就可以把整座金字塔拆了。
从这个意义上说,NoahWeb中的“动作”概念很像是金字塔的石块,每个“动作”就是一块石头,而整个应用就是整座金字塔。尽管每块石头紧紧相连,但它们之间从始至终却不存在任何必然的联系。一旦遇到必须的改动,比如需求变更的时候,由于这个特性,你可以任意“搬动”或是“改动”任意一块“石头”而无需考虑其他“石头”。
反观现代的一座座琼楼玉宇,很漂亮很实用,但是由于种种原因,在盖楼的时候,每块砖之间却使用了砂浆之类的粘结物质,目的很简单,只有这样楼才不会塌。
真巧!这和面相对象编程中的类,对象的概念很像。如果说每一块砖就是一个类或是一个对象的话,那么整座大楼也就是整个应用。而类或对象之间的关系恰恰就是粘结它们所使用的砂浆。没有“砂浆”,类或对象之间就不能发生关系,整个应用也就无从谈起了。现在,楼盖起来了,关系形成了,一切都没问题了吗?如果这个时候需求变更了呢?已经“粘”在一起“砖”你能轻松地再把它们分开吗?难道……要把“楼”“炸了”重新“盖”吗?……
- 推荐阅讯
- Delphi面向对象的编程方法(六)
- 杜绝安全隐患 容易忽视的Oracle安全问题
- 探讨Oracle数据库的数据导入方法
- Delphi面向对象的编程方法(五)
- 利用Delphi全面控制Windows任务栏
- Delphi文本编辑器的设计(一)
- COM组件设计与应用之VC6中用ATL写组件
- NoahWeb实现表格多行多列
- 软件的架构与模式之经典架构模式简介
- 没落的奇迹 谁会买下Delphi?
- 阅读排行
- 1.全面剖析Delphi 2006新增特性
- 2.用Delphi开发视频聊天软件
- 3.用Win32 API枚举应用程序窗口和进程
- 4.软件的架构与设计模式之什么是架构
- 5.软件的架构与设计模式之模式的种类
- 6.Delphi中为TreeView添加单选和复选框
- 7.用Delphi实现24位真彩色图标
- 8.VS.NET2005 Beta2初体验之感受2005
- 9.程序界面设计模式慨述
- 10.没落的奇迹 谁会买下Delphi?
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
