软件技术连载(三)

来源:互联网 发布:java等待线程执行完毕 编辑:程序博客网 时间:2024/04/30 13:42

软件技术连载(三)

POWERBUILDER的魅力(三)反界面与逻辑分离

作者:轻风   个人主页:http://gentlebreeze.home4u.china.com

界面与逻辑分离的方法也许是近年来最具创新意义的设计理念之一。各种体系结构大多要围绕这一主题。这种方法使得技术有可能按照技术特征本身进行分工,使得程序的扩展性和灵活性获得了空前的提高。著名的Enhydra体系中的XMLC几乎将这种能力发挥到了一个高峰,可以将一个页面编译成类,并允许程序员对这个新生成的类进行编程。但是任何的技术模式都有其应用范围,并不是所有的角落都适合这种模式。

首先的问题是界面和能力是否真正能够分离?从面向对象的本质特征来看是比较困难的。我们知道所谓对象就是对真实事物的反应,真实世界的事物恰恰不是界面与逻辑分离的,只有人工制造的事物才具有这个特征。这也正是自然界的事物坚固而人造事物效率高的主要原因之一。人造事物是可拆卸的,可以反复重新组装,而自然界的对象是无法做到的。因此所谓界面与逻辑分离的方法本身就是着强烈的人工色彩并受到了相应的限制。

其次是界面与逻辑分离的成本和收益比较。我们知道界面与逻辑分离的巨大好处就是重用逻辑,单独管理逻辑。这就造成了界面本身是难以重用的。另外需要技术人员分别描述界面和逻辑并还要定义连接接口和代码。例如我们用XMLC进行工作的时候首先要定义一个页面,接着定义标记,然后要编译页面并装配到环境中。最后逻辑会感知这个页面的类,就可以编程了。XMLC用工具节省了很大的工作量,但是运行代价和稳定性的代价是要付出的。如果系统的可扩展性和灵活性不需要那么高,这样的代价取得的收益就是亏损了

最后是界面和逻辑分析的灵活性的限制。由于逻辑和界面的分离使得系统在不同的环境下都要定制界面,这样在特定环境下就限制了系统的灵活性,增加了开发投入。例如我们在桌面定义的一个展示数据的程序基本上就无法应用到其他环境中了,只好按照接口重新定义新的界面

上一篇文章中我们阐述了数据窗口对环境的适应能力特点。实质上就是一种重用到界面的方式和理念。数据窗口的特征就是界面与逻辑是一体的,这对于程序员来说是非常熟悉的模式。当程序员编制一个数据窗口时需要一边定义数据访问方式,一边定义展示方式,例如诸多的数据窗口形式,这客观上增加了程序员的负担,但同时也带来了诸多好处。定义好的界面可以在很多环境下得到重用,就如同上一篇文章阐述的适应性,可以几乎不加修改的放到不同的环境中直接运行展示。对环境的适应主要由容器解决,容器理解并翻译了数据窗口的展示形式。我们可以对比两种方式的不同特点:界面与逻辑分离的方式是将逻辑封装,并放到容器中管理,目前主要是应用服务器。应用服务器负责管理逻辑并给不同的界面提供一致的访问方式。而数据窗口的做法是连同界面和逻辑一起进行封装。然后放置到不同的容器中,由容器解释对界面的翻译,对容器的适应是由插件处理的。这就好比一副画,画好了以后可以装到不同的画框里,而不用因为画框不同重新画画一样。应该讲这两种方式是各具特点的,有着不同的擅长的范围,就看设计者具体的环境和目标。如果设计者面临的环境非常复杂并且逻辑统一管理非常重要,特别是设计者允许有很好的前期投入,那么界面与逻辑分析就比较适合。因为你要为可能以后不需要的界面预留出接口。如果设计者面临的任务是快速实现并且系统的业务模式本身是相对稳定的但是环境却有不确定性那么采用后者的理念就有很大的优势。正是由于界面与逻辑分析的好处,PowerBuilder实现了非可视化的数据存储对象,供技术人员选择。我们期望技术人员的选择逐渐走向多样化,而不是越来越少

原创粉丝点击