遭遇ASP類的事件設計

2021-04-23 22:35:33 字數 1522 閱讀 7846

我之所以還是要宣揚用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來說更為嚴謹一些。

遭遇ASP類的事件設計

我之所以還是要宣揚用mvc來開發asp,只是想讓面向過程的思考方式變成物件導向的思考方式,這個對於任何一種語言的開發員來說都是有好處的。mvc是個標準模型,asp要實現似乎真的是很困難,但是標準是標準,運用是運用,既然asp要實現這個模型很難,那可以嘗試著將mvc模型變形成適合自己的模型。不管白貓黑...

遭遇ASP類的事件設計

這段時間由於接觸到mvc,也知道了class的運用方式,遭遇到了事件的設計。其實具體的事件設計方式我也不是很明白,在qq裡newskyline跟我說了,asp沒辦法作class的事件,只能模擬。而我呢。算是為達目的不則手段 寫程式而以 的,認為模擬也好,非模擬也行,只要達到我想要的效果就是好東西。模...

遭遇ASP類的事件設計

我之所以還是要宣揚用mvc來開發asp,只是想讓面向過程的思考方式變成物件導向的思考方式,這個對於任何一種語言的開發員來說都是有好處的。mvc是個標準模型,asp要實現似乎真的是很困難,但是標準是標準,運用是運用,既然asp要實現這個模型很難,那可以嘗試著將mvc模型變形成適合自己的模型。不管白貓黑...