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