我虽然对POO很满意,但现在我和以下人员都感到困惑。
例如,我们假设您已创建了扩展抽象类Dog
的{{1}}和Cat
个对象。
Animal
具有通用属性:
abstract Animal
有额外的属性:
Cat extends Animal
有额外的属性:
现在,我希望以通用的方式显示应用程序中所有动物的列表。很简单,应用程序只是从数据库中提取所有Animal对象,将它们放在一个很好的Dog extends Animal
中,每个对象都用适当的类实例化。
但现在,当我点击一只给定的动物时,我希望能够显示List<Animal>
通用属性和特定于其类型的属性。
例如,如果所选动物是猫,我希望UI显示通用动物属性Animal
和color
,但我还想显示cat属性legs
。同样适用于humansTolerance
的狗。
我是否应该使用经常被称为臭名昭着的ballsRetrieved
/ instanceof
来做到这一点?如何根据对象的类型使UI显示各种元素?
答案 0 :(得分:0)
使用虚拟方法或Visitor Pattern。
答案 1 :(得分:0)
明显的面向对象方法是在对象中使用display()
方法。每个“类”都会显示出来:
class Dog {
...
public display(): void {
...
}
}
我不知道TypeScript中的“习惯”是什么,但面向对象的方法会隐藏属性,而是提供行为。