1、单件模式
Class:SingletonClass
模块声明
3:工厂模式:
CreateObject
4:ComUnit的一个设计模式
使用TestCaseNames向外暴露自身扩展的成员。
使用类似于TestString的方法(接口参数一致),来扩展自身功能。
借助TestResult来贯穿类处理的总线。
使用TestRunner来处理符合ITestContainer接口的类。
5:观察者模式
Class:SingletonClass
Option
Explicit
Public Count As Integer
Private Sub Class_Initialize()
If gSingleton Is Nothing Then
Set gSingleton = Me
End If
End Sub
Public Function GetInstance() As SingletonClass
Set GetInstance = gSingleton
End Function
Public Count As Integer
Private Sub Class_Initialize()
If gSingleton Is Nothing Then
Set gSingleton = Me
End If
End Sub
Public Function GetInstance() As SingletonClass
Set GetInstance = gSingleton
End Function
模块声明
Public
gSingleton
As
SingletonClass
2、方法继承
Class:IMethod
Public
Function
SetName(Name
As
String
)
SetName = Trim ( UCase (Name))
End Function
SetName = Trim ( UCase (Name))
End Function
Class:NewMethod
Implements IMethod
Private Base As IMethod
Private Sub Class_Initialize()
Set Base = New IMethod
End Sub
Private Sub Class_Terminate()
Set Base = Nothing
End Sub
Private Function IMethod_SetName(Name As String ) As Variant
IMethod_SetName = Base.SetName(Name)
IMethod_SetName = IMethod_SetName & " 0001 "
End Function
Private Base As IMethod
Private Sub Class_Initialize()
Set Base = New IMethod
End Sub
Private Sub Class_Terminate()
Set Base = Nothing
End Sub
Private Function IMethod_SetName(Name As String ) As Variant
IMethod_SetName = Base.SetName(Name)
IMethod_SetName = IMethod_SetName & " 0001 "
End Function
3:工厂模式:
CreateObject
4:ComUnit的一个设计模式
Implements ITestContainer
Public Property Get ITestContainer_TestCaseNames() As Variant()
ITestContainer_TestCaseNames = Array ( " TestString " )
End Property
Public Sub ITestContainer_RunTestCase(oTestCase As ITestCase, oTestResult As TestResult)
CallByName Me, oTestCase.Name, VbMethod, oTestResult
End Sub
Public Sub TestString(oTestResult As TestResult)
End Sub
Public Property Get ITestContainer_TestCaseNames() As Variant()
ITestContainer_TestCaseNames = Array ( " TestString " )
End Property
Public Sub ITestContainer_RunTestCase(oTestCase As ITestCase, oTestResult As TestResult)
CallByName Me, oTestCase.Name, VbMethod, oTestResult
End Sub
Public Sub TestString(oTestResult As TestResult)
End Sub
使用TestCaseNames向外暴露自身扩展的成员。
使用类似于TestString的方法(接口参数一致),来扩展自身功能。
借助TestResult来贯穿类处理的总线。
使用TestRunner来处理符合ITestContainer接口的类。
5:观察者模式
Option
Explicit
' Ineteface Subject
Public Sub Register(obs As Observer)
End Sub
' Ineteface Subject
Public Sub Register(obs As Observer)
End Sub
Option
Explicit
' Interface Observer
Public Sub Notify(msg As String )
End Sub
' Interface Observer
Public Sub Notify(msg As String )
End Sub
'
frmMain
Implements Subject
Dim cc As Collection
Private Sub Command1_Click()
Dim c As Observer
For Each c In cc
c.Notify InputBox ( " Caption: " )
Next
End Sub
Private Sub Form_Load()
Set cc = New Collection
Dim o As frm1
Set o = New frm1
o.Ini Me
o.Show
Dim oo As frm2
Set oo = New frm2
oo.Ini Me
oo.Show
End Sub
Private Sub Subject_Register(obs As Observer)
cc.Add obs
End Sub
' frm1
Implements Observer
Public Sub Ini(s As Subject)
s.Register Me
End Sub
Private Sub Observer_Notify(msg As String )
Me.Caption = msg
End Sub
' frm2
Implements Observer
Public Sub Ini(s As Subject)
s.Register Me
End Sub
Private Sub Observer_Notify(msg As String )
Me.Caption = msg
End Sub
Implements Subject
Dim cc As Collection
Private Sub Command1_Click()
Dim c As Observer
For Each c In cc
c.Notify InputBox ( " Caption: " )
Next
End Sub
Private Sub Form_Load()
Set cc = New Collection
Dim o As frm1
Set o = New frm1
o.Ini Me
o.Show
Dim oo As frm2
Set oo = New frm2
oo.Ini Me
oo.Show
End Sub
Private Sub Subject_Register(obs As Observer)
cc.Add obs
End Sub
' frm1
Implements Observer
Public Sub Ini(s As Subject)
s.Register Me
End Sub
Private Sub Observer_Notify(msg As String )
Me.Caption = msg
End Sub
' frm2
Implements Observer
Public Sub Ini(s As Subject)
s.Register Me
End Sub
Private Sub Observer_Notify(msg As String )
Me.Caption = msg
End Sub