使用VBScript 中的類(lèi)組織開(kāi)發(fā)
當(dāng)在一個(gè)機(jī)構(gòu)內(nèi)部創(chuàng)建Web應(yīng)用程序時(shí),有時(shí)候你會(huì)發(fā)現(xiàn)你自己從一個(gè)應(yīng)用程序中復(fù)制和粘貼相同的代碼到其它的應(yīng)用程序中。如果你能夠固化所有這些過(guò)程到一個(gè)好用的小包(package)中,其后你就可以在整個(gè)域中使用它了,這樣會(huì)方便很多。
同時(shí),如果你有一個(gè)重復(fù)使用的過(guò)程,創(chuàng)建一個(gè)類(lèi)包含你的過(guò)程可能會(huì)比較有用。使用類(lèi)組織你的代碼有一些優(yōu)點(diǎn):它使得你的代碼容易閱讀和調(diào)試;你可以將你的類(lèi)輕松的移值到一個(gè)Web服務(wù)中;你為其它開(kāi)發(fā)人員提供一個(gè)抽象工具(從而節(jié)省了時(shí)間和資金);同時(shí)在一個(gè)項(xiàng)目的開(kāi)發(fā)階段你還保留了靈活性。
當(dāng)把你的通用過(guò)程組織到一個(gè)類(lèi)的時(shí)候,你創(chuàng)建一級(jí)抽象,允許你在幾乎所有代碼中實(shí)現(xiàn)這些過(guò)程。例如,假設(shè)在你創(chuàng)建的每個(gè)Web應(yīng)用程序中,你者需要初始化用戶信息。這個(gè)初始化過(guò)程包括在用戶登錄到你的應(yīng)用程序時(shí)根據(jù)用戶憑證所做的一些數(shù)據(jù)庫(kù)服務(wù)器連接。如果你在每個(gè)應(yīng)用程序中都需要完成這個(gè)任務(wù)的話,那么將你的代碼固化到一個(gè)類(lèi)中相當(dāng)有意義。
下面是實(shí)現(xiàn)方法:
Dim MyToolbox
Set MyToolbox = New CToolbox
Response.Write "UserName: " & MyToolbox.UserName & "<BR>" & vbCrLf
Response.Write "UserPhone: " & MyToolbox.UserPhone & "<BR>" & vbCrLf
Set MyToolbox = Nothing
Class CToolbox
Private m_conn, m_rs
Private m_username, m_userphone
Public Property Get UserName()
UserName = m_username
End Property
Public Property Get UserPhone()
UserPhone = m_userphone
End Property
Private Sub Class_Initialize()
Set m_conn = Server.CreateObject("ADODB.Connection")
m_conn.ConnectionString = "Some connection string"
m_conn.Open
Set m_rs = Server.CreateObject("ADODB.Recordset")
Set m_rs.ActiveConnection = m_conn
m_rs.Open "Select * FROM Users Where userid = '" &
Request.ServerVariables("LOGON_USER") & "'"
If Not m_rs.EOF Then
m_username = m_rs.Fields("username")
m_userphone = m_rs.Fields("userphone")
End If
End Sub
Private Sub Class_Terminate()
On Error Resume Next
m_rs.Close
Set m_rs = Nothing
m_conn.Close
Set m_conn = Nothing
End Sub
End Class
從例子中你可以看到,UserName 和 UserPhone 屬性在類(lèi)初始化之后就會(huì)有值。你可以將這個(gè)類(lèi)的代碼放到 ASP 代碼的最后。然后在其余的代碼中其功能就可以在使用,不用實(shí)例化ADO對(duì)象,進(jìn)行數(shù)據(jù)庫(kù)調(diào)用和之后的清理。而且,如果你使用的是 Microsoft Visual InterDev,那么類(lèi)中定義的屬性和方法可以通過(guò)智能感知(IntelliSense)使用。
智能感知只對(duì)一級(jí)屬性和方法有效,所以如果你創(chuàng)建一個(gè)類(lèi)返回其它 ASP 類(lèi)的對(duì)象,那么 InterDev 就不會(huì)提供可用的方法和屬性。
下面的代碼是一個(gè)類(lèi)的骨架:
Class MyClass
Private Sub Class_Initialize()
End Sub
Private Sub Class_Terminate()
End Sub
End Class
使用這個(gè)基本信息,一個(gè)類(lèi)被聲明,并且可以使用它來(lái)創(chuàng)建對(duì)象。但是這個(gè)類(lèi)的對(duì)象沒(méi)有功能——它們是無(wú)用的東西。類(lèi)的方法從 Public Sub 或者 Public Function 聲明構(gòu)建(Subs 沒(méi)有返回值,而 Function 有返回值)。
有兩個(gè)方法可以暴露屬性:既可以在類(lèi)的全局上下文中使用 Public VarName,也可以使用 Public Property Get/Set/Let。如果你需要一個(gè)只讀屬性,那么只要簡(jiǎn)單地使用一個(gè) Property Get 聲明即可。所有其它聲明為 Private 的 Properties,Subs 或者 Functions 只有在實(shí)例化的對(duì)象才可用。在類(lèi)的全局上下文中聲明為 Private 的變量是成員變量。
創(chuàng)建類(lèi)的另外一個(gè)好處是你可以輕易的將這個(gè)類(lèi)聲明移值到 Web 服務(wù)中。因?yàn)檫@是很多開(kāi)發(fā)人員前進(jìn)的方向,你可以通過(guò)使用類(lèi)創(chuàng)建面向?qū)ο蟮拇a先行一步。當(dāng)你移值這些類(lèi)聲明到一個(gè) Web 服務(wù)時(shí),你不需要重寫(xiě)所有的放置了那段代碼的ASP代碼。所要做的唯一的改變就是你的對(duì)象的實(shí)例化。
我發(fā)現(xiàn)創(chuàng)建這個(gè)抽象的最大的優(yōu)點(diǎn)是可以使用其它 Web 開(kāi)發(fā)者的幫助。因?yàn)閷?duì)于很多開(kāi)發(fā)人員來(lái)說(shuō)在每個(gè)不同的實(shí)現(xiàn)中重復(fù)創(chuàng)建相同的代碼效率相當(dāng)?shù)?,所以這個(gè)方法為每個(gè)開(kāi)發(fā)人員提供了一個(gè)抽象工具。這就允許每個(gè)開(kāi)發(fā)人員將精力更多地集中在當(dāng)前工作的功能上面,而不是花費(fèi)時(shí)間重寫(xiě)他們已經(jīng)開(kāi)發(fā)過(guò)的代碼上面。
如果你奇怪為什么我不提供一個(gè)COM對(duì)象來(lái)處理這個(gè)功能,那是因?yàn)樗鼤?huì)把你鎖定到細(xì)節(jié)設(shè)計(jì)中。通過(guò)在 ASP 中動(dòng)態(tài)地創(chuàng)建類(lèi),你可以不用重新編譯和發(fā)布就能夠?qū)︻?lèi)做出更改。在類(lèi)固定之后,再將它移值到 COM、Windows 腳本組件(WSC)或者一個(gè) Web 服務(wù)中,但是在開(kāi)發(fā)階段還是靈活一些好。
上一篇:用vbs將輸出內(nèi)容寫(xiě)到屏幕以覆蓋當(dāng)前屏幕上的內(nèi)容的方法
欄 目:vb
本文標(biāo)題:使用VBScript 中的類(lèi)組織開(kāi)發(fā)
本文地址:http://mengdiqiu.com.cn/a1/vb/7923.html
您可能感興趣的文章
- 01-10VBS中的正則表達(dá)式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
- 01-10VBScript教程 第七課使用條件語(yǔ)句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁(yè)面中添加VBscript代碼
- 01-10VBScript教程 第十四課在VBScript中使用對(duì)象
- 01-10VBScript教程 第六課VBScript運(yùn)算符
- 01-10VBScript的入門(mén)學(xué)習(xí)資料


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱(chēng)qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
隨機(jī)閱讀
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什