1

首先,我不确定我计划的方式(并将在下面描述)是否一定是做到这一点的“最佳”方式,所以我愿意接受建议。我有一个应用程序,我需要添加在运行时从硬件监视器收集信息的功能。我需要以可扩展的方式构建这个通信框架,以便我可以支持具有不同通信协议的多个不同监视器。

我的计划是为每个不同的监视器编写一个类,每个监视器都将实现相同的方法。它看起来像下面这样:

监视器1.vb:

Public Function GetHR() as integer
    //Code specific to interact with Monitor 1
    return HR as integer
End Function

监视器2.vb:

Public Function GetHR() as integer
    //Code specific to interact with Monitor 2
    return HR as integer
End Function

然后我会在实现页面上选择活动监视器并调用函数 Implementation.vb:

ActiveMon = Monitor1
CurrentHR = ActiveMon.GetHR()

如果这是设置活动类的可接受方法,我将如何设置它(我猜我上面简单设置变量的示例不是正确的方法)。如果这不是最好的方法,我应该怎么做?

4

1 回答 1

2

通常对于这种类型的东西,您要么想要使用接口,要么使用继承。如果类有一些共同的共享代码,继承将是更好的选择。如果它只需要提供常用方法,接口就可以正常工作:

Interface IMonitor
    Function GetHR() as Integer
End Interface

Public Class Monitor1
    Implements IMonitor

    Public Function GetHR() as Integer Implements IMonitor.GetHR
        ' Do Stuff
        Return someValue
    End Function
End Class

Public Class Monitor2
    Implements IMonitor

    Public Function GetHR() as Integer Implements IMonitor.GetHR
        ' Do other Stuff
        Return someValue
    End Function
End Class

然后你可以有一个接口类型的变量并分配给它:

Dim myMonitor as IMonitor
myMonitor = new Monitor1()
Dim result = myMonitor.GetHR() ' Some result
myMonitor = new Monitor2()
result = myMonitor.GetHR()     ' Some other result
于 2013-01-29T21:10:27.200 回答