我有一个VB.Net应用程序,该应用程序根据条件将两个类之一分配给变量。目前,我正在进行非常直接的后期绑定。我正在寻找其他可能会改善性能的解决方案。
简化示例,我有CAT和DOG类,它们都从ANIMAL类继承。我的代码如下所示:
Dim Pet as Object
Dim Allergic as Boolean = True
If Allergic then
Pet = New DOG
Else
Pet = New CAT
End If
If Allergic then
Pet.Bark
Pet.Fetch
Else
Pet.Meow
Pet.UseLitterBox
End Else
无论如何要这样做,以便我可以尽早绑定到分配的ANIMAL子类?
不,你不能这样做。VB.NET要求在编译时知道类型。
通常,您应该尝试通过多态性来解决这个问题。你不应该把两者Meow
并Bark
在Animal
类(这违反了所谓的里氏Substitutiton原则,因为Meow
是不恰当的Dog
,反之亦然)。
取而代之的是,您需要一个名为之类的方法Animal.MakeNoise
,其中aDog
将被吠叫覆盖,而aCat
将被喵叫覆盖。这样,就MakeNoise
抽象出了要制造的特定噪音的细节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句