遭遇ASP類的事件設計

來源:互聯網
上載者:User

作者的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來說更為嚴謹一些。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.