我有一个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子类?
答案 0 :(得分:0)
不,你不能这样做。 VB.NET要求在编译时知道类型。
通常,您应该尝试通过多态来处理这个问题。你不应该在Meow
类上放置Bark
和Animal
(这会违反所谓的Liskov Substitutiton原则,因为Meow
不适合Dog
{1}},反之亦然)。
相反,你需要一个名为Animal.MakeNoise
的方法,Dog
会通过吠叫覆盖,而Cat
会被喵喵覆盖。通过这种方式,MakeNoise
抽象远离要制作的特定噪音的细节。