ASP面向对象编程探讨及比较 选择自 RAINMAN_NET 的 Blog
关键字 ASP面向对象编程探讨及比较
出处
ASP是Microsoft于较早期推出的动态网页编程技术,但其结合ADO对数据库方便快捷的访问、结合XML、COM/ActiveX等其它技术 实现服务器多层结构的功能使它在今天还有着顽强的生命力,并且依然有着一定的发展。ASP.Net虽然在架构上完全不同于ASP,但它很多内建对象也是基 于ASP进行扩展的。网上有无数的介绍ASP的文章,却鲜有介绍ASP面向对象以及与其它语言比较的,这也就是我下决心写这篇文章的原因。
因为是早期的版本,ASP只提供了很弱的面向对象的接口。众所周知,ASP的实现语言分为VBScript和JavaScript/JScript: 在VBScript中有Class关键字,可以用来声明一个自定义类;JavaScript就比较怪,它用一个函数来“声明”类,然后在该函数里通过 this.prototype定义属性,this.func定义方法。这里将以VBScript为主进行讨论,VBScript的类声明是这样的:
Class name
statements
End Class
这里statements里可以声明公有或私有的成员,包括函数、成员和属性。关于属性,不得不赞一下微软的get和set方法,这个在COM中出现 的理念,直到.Net中一直被沿用下来,个人认为对程序员而言,比Java用getProp()、setProp()两个方法来实现同样效果要方便直观得 多。
相比之下,VBScript中的类与PHP4中的类各有千秋(当然跟最新的PHP5没法比),VBScript中的类保持了VB的不完全面向对象的 “特性”,它仅仅实现了最基本的构造/析构函数、成员函数、变量、属性,甚至构造函数不能带参数。PHP4中则还实现了继承、函数重载等类的重要性质,也 只有实现了这些,才能称之为面向对象,才有可能为实现多态提供基础。但二者均没有实现类的静态(static)成员等功能。尽管可以用其它一些变通达到同 样的功效,但从面向对象的思想出发,这都是不彻底的(由于PHP非常灵活,PHP4中可以通过成员函数的静态变量来间接实现类的静态变量;而“::”—— 可以实现类的静态函数访问的操作符——在PHP4中没有严格检查。换句话说,所有的成员函数都可以当成静态函数访问,只要你在该函数里不使用成员变量就不 会出错。VBScript根本没有实现static,只能用Session或Application来实现)。所以在平常的使用中,你可以使用 VBScript的自定义类来封装一些操作,但不要指望它像C++ / Java / .Net那样为你的面向对象思想服务。
VBScript同样发扬了VB中默认的参数或变量是引用的好风格。这样,尽管Script语言中对类型不敏感,但它还能够达到C/C++里指针/引用同样的功效,完成很多事情。最基本的,比如说用它定义一个列表(List)的节点类ListNode:
ASP面向对象编程探讨及比较
内容版权声明:除非注明,否则皆为本站原创文章。