【问题标题】:vb.net implement strategy pattern with different interfacevb.net 实现不同界面的策略模式
【发布时间】:2011-09-09 23:24:45
【问题描述】:

是否可以在 VB.net 中实现具有不同参数的策略模式? 例如我有以下代码:

Public Interface InterfaceDataManipulation
Sub updateMyData()
End Interface

如何在实现上述不同参数的接口类的类中实现updateMyData,例如在类x中:

Public Class X
Implements InterfaceDataManipulation
Public Sub updateMyData(ByVal x as String)
 Console.Writeline(x)
End Sub
End Class

但 IDE 引发错误“类 x 必须在接口 InterfaceDataManipulation 上实现 updateMyData”

【问题讨论】:

    标签: vb.net design-patterns strategy-pattern


    【解决方案1】:

    通过添加参数,您并没有实现接口 - 接口的想法是人们可以通过只知道接口来使用您的类 - 所以您的子参数不会符合他们的期望。

    可能有很多方法可以给这只猫剥皮,但以下是其中的一些选项:

    • 不要使用界面
    • 将您的 updateMyData 版本实现为重载,但您仍应在不带参数的情况下实现原始版本
    • 将 x 作为属性传递给您的类,然后 updateMyData 方法可以使用该属性,同时仍然具有与接口匹配的签名。

    【讨论】:

      【解决方案2】:
      Public Class X
      Implements InterfaceDataManipulation
      Public Sub updateMyData(ByVal x as String) Implements InterfaceDataManipulation.updateMyData
       Console.Writeline(x)
      End Sub
      End Class
      

      方法签名需要附加它在接口中实现的方法,如上所示。

      【讨论】:

      • 有趣,因为当我将问题的接口声明和您的类结合起来时,我得到“错误 BC30149:类 'X' 必须为接口 'InterfaceDataManipulation' 实现 'Sub updateMyData()'。”和“错误BC30401:'updateMyData'无法实现'updateMyData',因为接口'InterfaceDataManipulation'上没有匹配的子。”和我预期的一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      相关资源
      最近更新 更多