遭遇ASP类的事件设计

设计

作者的blog: http://blog.csdn.net/oyiboy/

我之所以还是要宣扬用MVC来开发ASP,只是想让面向过程的思考方式变成面向对象的思考方式,这个对于任何一种语言的开发员来说都是有好处的。
MVC是个标准模型,ASP要实现似乎真的是很困难,但是标准是标准,运用是运用,既然ASP要实现这个模型很难,那可以尝试着将MVC模型变形成适合自己的模型。
  “不管白猫黑猫能逮到耗子的就是好猫。”而对于我们开发者来说,不管是什么模型,能正确的指引我们的思路,完美完成项目的模型就是好模型。毕竟用户最终用是我们的程序而不是我们的模型。

  这段时间由于接触到MVC,也知道了Class的运用方式,遭遇到了事件的设计。

  其实具体的事件设计方式我也不是很明白,在QQ里newskyline跟我说了,ASP没办法作Class的事件,

只能模拟。而我呢。算是为达目的不则手段(写程序而以)的,认为模拟也好,非模拟也行,只要达到我想要的效果就是好东西。

  模拟事件的方式有两种:

  第一种:借用了execute/eval,用一个属性收取函数名的字符,然后使用execute/eval来运行函数。
    如:
      obj.OnDataUpdateStart="CheckData"
     其构造为:
      public property let OnDataUpdateStart(byval A_strValue)
      '在此省略了对A_strValue的一些严谨的验证代码。
        p_strOnDataUpdateStart=A_strValue
      end property
    
     事件是触发为:
      public sub DataUpdate()
        '...忽略过程...
        execute(p_strOnDataUpdateStart & "(参数变量一,参数变量二)")
        '...忽略过程...
      end sub
    稍微提一下execute和eval的不同点。
    同样的“x=y”。execute("x=y")的结果是将y值赋给x,而eval("x=y")则会返回一个Boolean值,表示x与y的测试结果,如x等于y则返回true,反之返回false。

  第二种:借用函数指针GetRef,在vbs手册的解释上来看就是绑定事件专用的函数。具体解释如下:

    “返回一个指向一过程的引用,此过程可绑定某事件。”
    具体运用例子,如:
      obj.OnDataUpdateStart="CheckData"
      其构造则改为:
        public OnDataUpdateStart  '其实可以使用get/let模式,想偷懒了,所以直接声明一个公开变量来传递了。

      事件触发则改为:
        public sub DataUpdate()
          '...忽略过程...
          set me.OnDataUpdateStart=GetRef(OnDataUpdateStart)
          me.OnDataUpdateStart("参数变量一","参数变量二")
          '...忽略过程...
        end sub

  以上两种方式可以实现事件绑定,但是,从解释上来说,我比较推崇第二种,相对于execute/eval来说更为严谨一些。

时间: 2025-01-02 20:23:03

遭遇ASP类的事件设计的相关文章

遭遇ASP类的事件设计_ASP CLASS类

作者的blog: http://blog.csdn.net/oyiboy/ 我之所以还是要宣扬用MVC来开发ASP,只是想让面向过程的思考方式变成面向对象的思考方式,这个对于任何一种语言的开发员来说都是有好处的. MVC是个标准模型,ASP要实现似乎真的是很困难,但是标准是标准,运用是运用,既然ASP要实现这个模型很难,那可以尝试着将MVC模型变形成适合自己的模型. "不管白猫黑猫能逮到耗子的就是好猫."而对于我们开发者来说,不管是什么模型,能正确的指引我们的思路,完美完成项目的模型就

ASP.NET中基类页的设计和使用

在Asp.net业务系统的开发过程中,为了保证页面风格的一致性以及减少重复代码的编写,我们需要引入基类页的概念,即:定义一个基类页,让所有的页面都继承这个基类,并在该基类页中加入公用的属性和方法. 实际使用时,按照功能页面划分,可以定义多个基类页,如: class FormBase class BizFormBase :FormBase class ViewFormBase : BizFormBase class EditFormBase : BizFormBase class QueryFor

如何编写一个ASP类

前几天大佛写了"ASP设计模式",可能有些初学者或者刚刚接触ASP的朋友不一定完全看得明白,偶就整理了一下编写一个ASP类的方法,大部分是从网上找来的.希望对朋友们有帮助. <ASP设计模式>(作者 我佛山人): 首先ASP的类是由事件和方法(它们就是构成类的成员了)构成的,如果大家还没有接触过,可以先看看下面的说明:在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用) 或 Public(公有成员,可以在类内外部调用) .被声明

如何编写一个ASP类_ASP CLASS类

前几天大佛写了"ASP设计模式",可能有些初学者或者刚刚接触ASP的朋友不一定完全看得明白,偶就整理了一下编写一个ASP类的方法,大部分是从网上找来的.希望对朋友们有帮助.  <ASP设计模式>(作者 我佛山人): dispbbs.asp?boardID=20&ID=247879 首先ASP的类是由事件和方法(它们就是构成类的成员了)构成的,如果大家还没有接触过,可以先看看下面的说明: 在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,

Asp类 的数据库领域_ASP CLASS类

奶奶的,Asp类 是真不好学啊,看着简单,可真到用的时候,网上的代码是都报错啊!! 郁闷了恩久!! 3天了,终于调试出来了,一个简单的 数据库类模型,不敢独享,拿出来大家分享吧!本作品 归 站长中国 www.zzcn.net 彭彭所有 ,你们拷贝的时候不许去掉版权,否则拷贝的人全家死光光!!!!呵呵..:) 复制代码 代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLI

Asp类 的数据库领域

奶奶的,Asp类 是真不好学啊,看着简单,可真到用的时候,网上的代码是都报错啊!! 郁闷了恩久!! 3天了,终于调试出来了,一个简单的 数据库类模型,不敢独享,拿出来大家分享吧! 本作品 归 站长中国 www.zzcn.net 彭彭所有 ,你们拷贝的时候不许去掉版权,否则拷贝的人全家死光光!!!!呵呵..:) 复制代码 代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBL

ASP 类组合

ASP 类的功能实在有限,所以有时我们要实现复杂的功能,只好用组合来实现. class CFish    sub Swim()    end subend class class CBird    sub Fly()    end subend class class CAnimal    dim fish    dim bird     private sub class_initialize()        set fish = new CFish        set bird = ne

rework类的产品设计:站着把钱挣了

文章描述:rework类的产品设计:站着把钱挣了. 最早知道这本书, 是在 reader 的推荐里看到的. 买回来后再次延续了我的一贯特色: 扔在书架上不看. 后来被Eric借去, 没想到这娃一看就入了迷, 花了两天就翻完了, 并且极力推荐给周围的人(Eric 的 Gtalk 签名也换成了 "rework 重来"). 本来我对于这种众人一致好评的东西没什么好感, 但碍于这本书是我的, 也只有硬着皮头慢慢看起来. 不曾想, 这是一本适合各行各业老少皆宜的奇书. 它的内容真的很棒, 用两三

asp 类(class)导读

在VBScript中使用类涉及到一些关于面向对象的思想.使用各种语言都可以编写com组件,使用到asp之中,这些语言包含c.vb.delphi或者java等,可以看到windows操作系统可以兼容很多东西,这些都可能应用到asp当中.但是这些东西离实际的应用很远,asp主要是基于vbscript,来自微软的脚本语言. 模块的概念带来很多好处,参看置顶文章,他是我的一个朋友写的:http://www.aspxuexi.com/class/2006-4-26/asp_class.htm 国内和国外的