来源:百度文库 编辑:偶看新闻 时间:2024/05/06 10:54:32
首先这不是一样新技术,而是一种新思想,是基于面向对象思想的一种更符合人的思维习惯的编程模式。如果说面向对象是对现实世界的抽象,那么面向行为就是对人如何与现实世界的交互而做的更易于理解,更动态的封装。该思想的核心是:以“行为”为程序模块的基本单位,在模块开发之前,只需确定该模块 “用来干什么”,而模块的实现,所需参数,返回结果一律不需要关心。从而极大降低模块之间的耦合。
传统的软件开发通常以函数为模块的基本单位,其弊端是很明显的。而面向对象的概念中则提供了对象和接口,它的特色是将有关现实世界的一切“名词”封装成一个代码块(类),从而使模块的内聚性有了很大的提高。但在封装一些功能,或者行为等抽象概念时则表现较差,因为在封装成类之前,仍必须先定义(声明)好类的属性、方法的参数、返回值,而这些在程序没有执行之前可能都是未知,无法确定的,我们必须根据经验去定义,说白了点就是猜测。简单来说:一个基本的功能(方法)模块,主要由四个部分组成:方法名、参数、实现、返回值,如图:
通过面向对象的思想,可以通过接口或抽象方法,只定义方法名,参数和返回值,而不去理会实现:
但这在具体的项目运用中还是不够的,因为有时候一个模块的参数和返回结果根本是不能事先确定定义的!于是笔者很自然地想到当需要一个功能的时候,只需要知道确定这个功能用来干什么(行为),把参数和返回值也统统忽略呢?
比如说我们需要实现一个网站的登录功能,首先我们想到的是定义方法:
bool Login(String account, String password); 根据经验,要登录,我们需要:account(账号)和password(密码),返回结果是成功或者失败(true or false)。但事实可能并不这么简单,因为假如在登录成功后,我们可能还需要向服务器的session变量里保存该用户的信息(对象),我们还需要一个参数:服务器Session, 和一个结果:对象User. 假如登录失败,我们可能还需要知道失败的原因(错误码),因为登录失败的原因有许多种:比如密码错误,账号不存在,数据库异常等等,这时网站管理员可能就需要返回一个错误码。
而面向行为的编程则能很好的解决这一点,假设我们要实现一个网站的登录功能,我们只需声明一下这个行为:Behavior Login;就这么简单。要实现该功能,只需重写该行为下的doing()方法。而该功能所需要的参数,返回结果集在实现里用:this.getParameter(String paraName), this.resultSet.set(String resultName, Object value)方法获取。
于是我用Java类对“行为”进行了一个封装,用来模拟“行为”的用法。并定义了一个服务器行为ServerBehavior, 实现了一个简单的面向行为的J2EE框架。实际上这不是个框架,我只是将服务器(Servlet)的“行为”进行了一个定义,定义是(笔者对服务器行为的理解):接收页面表单参数,调用相关业务行为,页面跳转(或者传出ajax数据)。
再拿网站登录来说吧,首先,我们只需确定一个行为:"登录(Login)",然后将其定义,继承一个行为类:
Java代码