0

こんにちは、クラシック ASP で Web サイトを作成する必要があります。きれいなデザインにしたいので、ViewModel パターンをエミュレートするためにクラスとモデルにすべてを入れようとします。

オブジェクトを作成するこのアプローチが良いかどうか教えてください。私はどこでもそれを使用します

Class User
Public Name
Public Adress
Public Title
Public Text 
Public Rights 'ArrayList of Right objects

    Private Sub Class_Initialize()
       Initialize
    End Sub

    Private Sub Class_Terminate()
       Dispose
    End Sub

   Private Sub Initialize()
       Name    = ""
       Adress  = ""
       Title   = ""
   Text    = ""
   Set Rights = Server.CreateObject("System.Collections.ArrayList") ' Arraylist .net
   End Sub

   Private Sub Dispose()      
   End Sub

End Class

Class Right

    Public Name

    Private Sub Class_Initialize()
        Initialize
    End Sub

   Private Sub Class_Terminate()
       Dispose
   End Sub

   Private Sub Initialize()
       Name    = ""
   End Sub

   Private Sub Dispose()      
   End Sub

End Class

そして、オブジェクトをインスタンス化するためにこれを行います:

Dim myUser 
Set myUser = New User

'Do some work

Set myUser = nothing 'Dispose the object 

任意のアイデア、提案、または修正を歓迎します。手伝ってくれてありがとう。

4

2 に答える 2

2

VBScriptは、パラメーターを使用したオブジェクトのインスタンス化をサポートしていませんが、次のように追加できます。

Public Function [New User](name)
    Set [New User] = New User
    [New User].Name = name
End Function

これで、次のようなユーザーを作成できます。

Set myUser = [New User]("Arthur Dent")

初期化中に設定する必須フィールドがある場合に便利です。

この手法でコンポジットを作成することもできます。

Public Function [New PowerUser](name)
    Set [New PowerUser] = New User
    [New PowerUser].Name = name
    Set [New PowerUser].Rights = RightsCollection("PowerUser")
End Function

Public Function [New GuestUser](name)
    Set [New GuestUser] = New User
    [New GuestUser].Name = name
    Set [New GuestUser].Rights = RightsCollection("Guest")
End Function
于 2012-09-04T10:57:17.843 に答える
1

追加の関数「Initialize」と「Dispose」を作成し、それぞれ Class_Initialize() と Class_Terminate() 内から呼び出す必要はありません。コードをクラス コンストラクターとデストラクター内に配置するだけです。

次に、メンバー変数をパブリックにしました。従来の ASP をできるだけオブジェクト指向で動作させたい場合は、ゲッターとセッターの使用を開始する必要があります。したがって、次のようになります。

Private m_Name

Public Property Get Name()  
    Name = m_Name
End Property

Public Property Let Name(sName)
    m_Name = sName
End Property

Rights メンバー変数を使用すると、さらに楽しくなります :)

于 2012-09-04T08:23:02.870 に答える