首先,我不确定我计划的方式(并将在下面描述)必然是“最佳”方式,所以我愿意接受建议。我有一个应用程序,我需要添加在运行时从硬件监视器收集信息的功能。我需要以可扩展的方式构建这个通信框架,以便我可以使用不同的通信协议支持多个不同的监视器。
我的计划是为每个不同的监视器编写一个类,每个监视器都将实现相同的方法。它看起来如下所示:
Monitor1.vb:
Public Function GetHR() as integer
//Code specific to interact with Monitor 1
return HR as integer
End Function
Monitor2.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()
如果这是设置活动类的可接受方法,我将如何设置它(我猜我上面的简单设置变量的例子不是正确的方法)。如果这不是最好的方法,我应该怎么做?
答案 0 :(得分: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