`
isiqi
  • 浏览: 16052294 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
阅读更多

什么是动作?

  动作是NoahWeb中极为重要的一个概念,浏览器与服务器一个完整的上下交互行程都可以理解成一个动作。


  动作编程与以往的过程编程和对象编程是截然不同的一种编程思路。过程编程已经被某种意义上被淘汰在此就不做讨论,而动作编程与对象编程相比较,他们之间最大的区别在于“高度”的不同。

  类、对象带给我们的面向对象编程可以让我们方便的在众多领域中进行复杂、高效的编程实现应用。每个有过对象编程学习经历的人在最初学习时也许都被问过“这个世界是由什么组成的?”通过这个方法以便让大家能直观的了解对象和类,而对象和类更可以让我们用最初认知的世界方式来理解和描述计算机中的各种功能和值。可是,对于网站、MIS或业务系统这些轻量级B/S架构的应用,对象编程也许并不是一种最好选择。
对于客户——程序结构设计重要还是流程设计重要?


  类、对象提供了我们一种去描述计算机程序内各种能力和值的方式,可类、对象也是一种很“低级”的描述方式。


  我们可以通过类和对象的方式来假设设计一个批发商买卖矿泉水的程序:
  首先,您需要使用对象的方式描述水的各种属性和它具有的能力,而水是被装在瓶子里,所以对于装水的瓶子您也需要用类或对象的方式去描述一下瓶子的属性和能力,瓶子需要被装在箱子里,所以您也需要去用类或对象的方式去描述一下箱子……到此暂停!
  回头看一下使用类和对象的时候我们在做什么?我们在进行对象之间的关系设计。而我们最初目的是什么?是设计一个批发商买卖矿泉水的流程。
  看一下使用动作编程是怎么设计整个流程的:
订单确认—>出库—>装货—>送货—>收款
  订单确认、出库、装货、送货、收款每个都是一个动作,而这些动作组合在一起构成了一个买卖矿泉水的动作流程。或许您还认为上述整个买卖矿泉水流程不合理应该是另一个更合理的流程。这样考虑就对了,因为您现在更多的时间已经花在为您的用户设计流程,而不是考虑设计整个类和对象之间的关系。
  对于系统的用户我们为他考虑的不应该是程序结构方面的设计,而应该更多的是流程方面的设计。在使用动作方式后,您关注的不再是类和对象之间的关系,而是整个流程的设计。


一级还是多级?
  我们还是继续来看批发商买卖矿泉水的流程设计,对象编程时,水和瓶子之间是存在关系,瓶子和箱子之又存在关系,再往上设计,或许还有批发商对象,买卖矿泉水的这个行为是由箱子这个对象来具备的.


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

   用动作来设计时,批发商、箱子、瓶子、水或乃至货币在整个流程中仅是以一种资源的形式存在着。水就水、瓶子就是瓶子、箱子就是箱子,他们之间有是一种平面的关系,而没有层级关系。资源存在的目的是为动作去服务,资源之间没有层也没有级的概念,资源可以同另一个资源有关系也可以依赖别的资源,但是这些关系仅是为了完成这个动作而存在。


  类和对象虽然可以让我们去描述这个世界的组成,可是类和对象不能让我们去很好的描述一个事物流程,在编写轻量级的应用时,如同现实世界中我们希望从某一个地方到达20公里外的另一地方一样,我们并没有必要为此去研究汽车的各种组成、研究发动机原理、研究圆周率,研究铺路等等这一切世界的物质构成,我们仅仅是需要去那一个20公里外的地方,您所做的只是需要抬手去打一辆车,并且告诉司机您想去的地方。汽车、自行车、飞机、公路、发动机等等这一切对于您仅是一种资源,他们仅是为您而存在。您所要做的仅是去使用他们。


  出租车和其他我们常见的东西,如浴缸,这些已存在的对象我们没必要再去定义一次,就如同现实里您想去某个地方时您会去打一辆出租车,而不是坐进一个浴缸里,在这我们已经没必要再用对象和类的方式来区别出租车和浴缸,他们有他们固然存在的对象构成方式,那是科学家或是工程师才有必要去考虑的,而在您使用他们的时候出租车就是出租车,浴缸就是浴缸。世界是由对象来组成,而动作才是去驱动这个世界运转的。

NoahWeb中的动作


  稍稍了解历史的人都知道,金字塔是世界奇迹之一。除了外形之谜,建造之谜以外,很奇怪的是,整座金字塔虽然使用石块垒起,但每块石头之间却没有丝毫的粘结物质。换句话说,如果你从塔顶上将石头一块一块往下搬,从理论上讲就可以把整座金字塔拆了。

  从这个意义上说,NoahWeb中的“动作”概念很像是金字塔的石块,每个“动作”就是一块石头,而整个应用就是整座金字塔。尽管每块石头紧紧相连,但它们之间从始至终却不存在任何必然的联系。一旦遇到必须的改动,比如需求变更的时候,由于这个特性,你可以任意“搬动”或是“改动”任意一块“石头”而无需考虑其他“石头”。

  反观现代的一座座琼楼玉宇,很漂亮很实用,但是由于种种原因,在盖楼的时候,每块砖之间却使用了砂浆之类的粘结物质,目的很简单,只有这样楼才不会塌。

  真巧!这和面相对象编程中的类,对象的概念很像。如果说每一块砖就是一个类或是一个对象的话,那么整座大楼也就是整个应用。而类或对象之间的关系恰恰就是粘结它们所使用的砂浆。没有“砂浆”,类或对象之间就不能发生关系,整个应用也就无从谈起了。现在,楼盖起来了,关系形成了,一切都没问题了吗?如果这个时候需求变更了呢?已经“粘”在一起“砖”你能轻松地再把它们分开吗?难道……要把“楼”“炸了”重新“盖”吗?……
  NoahWeb中的动作使用一个被预先约定好的环境变量名”action”,无论使用HTTP传输协议中的GET或POST方式对这个变量赋值都可以激发对应的动作。以动作为中心,可控制与调用其他相关的资源,NoahWeb中可用的资源被分为数据库操作、表单、字符、模组四大类。资源基本采用XML方式进行存放甚至描述。可通过使用NoahWeb中结构化的逻辑层(XML方式)来控制对资源的调用。而资源的显示效果则可以通过NoahWeb表现层轻易控制。这样开发出来的项目,资源的分布成平行,而程序逻辑又成线性,其中资源与资源,资源与动作或动作与动作之间完全呈现松偶合状.


  这对项目开发中必然会产生的需求变更后的变更灵活性和响应速度带来必要的支持,需求变动后仅需要变更相对应的动作。由于是采用资源松偶合下的动作来进行编程,所以在开发中一个动作的错误和问题并不会影响整个系统的开发进度甚至后期用户对整个系统的使用,有问题的动作仅会影响前后相应动作,不至于使得整个系统瘫痪。


  有时候我们也会需要将一个完整的系统拆分成多个小型系统,或将多个小型系统合并成一个大型系统。这时候动作也会带给我们很多便利.

  动作还有一个好处就是使得我们通过以现实世界中描述流程的方式来进行系统设计,可用通过分析需求后的用例图同时得到流程和系统结构设计,缩短系统设计时间.


  上述仅仅是对动作编程的一个简单介绍,去学习和了解她将会带给您更多的体验与感想。等待着您进入动作带给我们的崭新的编程世界,让我们一起用我们的动作驱动未来。

分享到:
评论

相关推荐

    Java_Web编程新手自学手册.pdf

    Java Web是当今使用最为广泛的Web开发技术之一,一直在开发领域占据着重要地位。...《新手学编程ABC丛书·Java Web编程新手自学手册(附光盘)》不但适用于Java Web的初学者,也可供有一定Java Web基础的读者阅读。

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    Java Web编程宝典-十年典藏版.pdf 是PDF电子书,不是源码。共分2个包。 《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Java Web进行程序开发的各种技术、技巧。...

    PHP和MySQL Web开发第4版pdf以及源码

    1.15 通过迭代实现重复动作 1.15.1 while循环 1.15.2 for和foreach循环 1.15.3 do...while循环 1.16 从控制结构或脚本中跳出 1.17 使用可替换的控制结构语法 1.18 使用declare 1.19 下一章 第2章 数据的...

    Java Web程序设计教程

    1.2.1面向对象的编程语言 3 1.2.2丰富的框架技术 4 1.2.3xml、css的应用 4 1.2.4使用javascript与ajax提升用户体验 7 1.3多种集成开发环境 9 1.3.1集成开发环境简介 9 1.3.2web应用服务器说明 11 本章小结 ...

    PHP和MySQL WEB开发(第4版)

    1.15 通过迭代实现重复动作 1.15.1 while循环 1.15.2 for和foreach循环 1.15.3 do...while循环 1.16 从控制结构或脚本中跳出 1.17 使用可替换的控制结构语法 1.18 使用declare 1.19 下一章 第2章 数据的存储与检索 ...

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    在面向对象的分析、设计和编程方面有十多年的经验。讲授课程包括ASPNET、 Web服务、.NET技术、XML技术、C#等。Shahr8m还撰写了多本关于ASP、NET的书,并在微软的MSDN存线文档以及Dr.Dobb’S Journal、asp.neetPRO等...

    超强的Web在线矢量绘图器与监控系统源码——基于visual graph

    超强的Web在线矢量绘图器与监控系统 ...OnlineDraw是一个VG专为IE设计的矢量...能轻松作出工业上的各种动作设备以及常用的曲线图、棒图、尺寸线,实现工业的过程监控;能让软件公司在短时间内开发出高质量的组态监控软件。

    PHP和MySQL Web开发第4版

    1.15 通过迭代实现重复动作 1.15.1 while循环 1.15.2 for和foreach循环 1.15.3 do...while循环 1.16 从控制结构或脚本中跳出 1.17 使用可替换的控制结构语法 1.18 使用declare 1.19 下一章 第2章 数据的...

    ASP.NET4高级程序设计(第4版) 3/3

    1.1.5 要点5:ASP.NET是面向对象的 7 1.1.6 要点6:ASP.NET支持所有的浏览器 8 1.1.7 要点7:ASP.NET易于部署和配置 8 1.2 ASP.NET的演变 9 1.2.1 ASP.NET1.0和ASP.NET1.1 9 1.2.2 ASP.NET2.0 9 1.2.3 ...

    移动ssh项目(struts+spring+hibernate+oracle)130222.rar

    Spring框架则以其依赖注入和面向切面编程的特性,优雅地管理了应用程序中的复杂性,如事务处理、安全性以及与多种持久层技术的整合。Hibernate则是项目中的ORM(对象关系映射)解决方案,它将Java对象映射到Oracle...

    advanced-webapps-class:通过Web前端开发领域的专业课程学习系统实用的实现方法

    JavaScript 语言的面向对象编程、语法和开发环境、脚本语言的基本形式和 JS 的独特特性 Javascript 和 DOM 处理文档对象模型,浏览器对象模型介绍 Javascript事件 理解事件模型,跨浏览问题 阿贾克斯 使用Ajax、...

    spring4.1核心包

    Spring面向切面编程,提供AOP实现。Spring Beans之上将横切关注点模块化 2. spring-aspects-4.1.1.RELEASE.jar 提供的对AspectJ框架的整合,也是A面向切面编程。 AspectJ可用于基于普通Java对象的模块化 注意:...

    《iPhone开发实战》.(Christopher Allen).pdf

    9.2 面向对象编程简介123 9.2.1 对象和类123 9.2.2 消息传递124 9.3 模型—视图—控制器(mvc)模式125 9.4 小结125 第三部分 sdk基本原理 第10章 objective-c和iphone os128 10.1 下载sdk128 10.1.1...

    Android高级编程--源代码

    该资料是《Android高级编程》的源代码 对应的书籍资料见: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社...

    毕设:仿QQ界面的聊天系统,客户端使用qt进行界面设计,服务端为linux,利用sockets编程.zip

    其中,信号会在某个特定情况或动作下被触动,槽是等同于接受并处理信号的函数。 为什么方法不是直接调用的。中间用到 Signal 和槽机制不是多此一举? 其实在我们生活也是一样,老板级别的好说话,老板给助理分派...

Global site tag (gtag.js) - Google Analytics