zoukankan      html  css  js  c++  java
  • VB6-设计模式点滴

    1、单件模式

    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 gSingleton As SingletonClass


    2、方法继承
    Class:IMethod

    Public Function SetName(Name As String)
        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 StringAs 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

    使用TestCaseNames向外暴露自身扩展的成员。

    使用类似于TestString的方法(接口参数一致),来扩展自身功能。

    借助TestResult来贯穿类处理的总线。

    使用TestRunner来处理符合ITestContainer接口的类。

    5:观察者模式

    Option Explicit
    'Ineteface Subject
    Public Sub Register(obs As Observer)
    End Sub

    Option Explicit

    '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
  • 相关阅读:
    c# 遍历DataTable
    c# 判断网络状态
    c# 发送Http 请求
    c# 处理Json字符串
    环境搭建(Nginx + PHP7 + Mysql + 运行ThinkPHP5项目)
    c# 获取时间戳
    php 处理 byte
    微信小程序 滚动至元素底部
    mysql 删除 多个字段相同的 重复的 数据
    微信小程序 跑马灯效果
  • 原文地址:https://www.cnblogs.com/Duiker/p/258405.html
Copyright © 2011-2022 走看看