首页 > 解决方案 > Java OOP - 简单示例中的建模问题(多态)。组合还是继承?

问题描述

我正在尝试用 Java (OOP) 对某些系统进行建模,但我将使用一个更简单的示例来解释我遇到的问题(我相信这与多态性和/或继承有关)。虽然我觉得解决方案可能与组合有关。

简单地说,我们有AnimalSpeciesBirdPigeon。我目前的关系是:

尽管请记住,这种设计应该可以扩展以包括更多AnimalsSpecies

我想做以下事情:

  1. 对于 a List<Animal>,我希望能够Pigeon仅添加(和其他动物)而不是Speciesor Bird。这很满意。
  2. 对于 a List<Bird>,我希望能够Pigeon仅添加(和其他鸟类)。这很满意。
  3. 但是,对于 a List<Species>,我只希望能够添加Bird(和其他物种);但是,通过这种设计的多态性,我Pigeon也可以添加不受欢迎的东西(我希望在这个例子中鸽子不是物种)。

我从来没有完全理解这一点,但我相信这会遇到我听过很多关于继承的问题。我希望我已经足够详细地解释了这个例子,但是如果有人对如何建模这个有任何建议(使用抽象类、接口、组合、设计模式等),那将非常感激!

标签: javaoopinheritancepolymorphism

解决方案


我会像这样在红色或蓝色关系之间选择一个来改变它:

在此处输入图像描述

第二点不满意,但您可以使用合成来避免它。


推荐阅读