【发布时间】:2013-12-19 22:29:17
【问题描述】:
假设我有一个名为 Element 的类,它是各种元素的超类; Wall、Door、Pickup、Table等。现在假设,其中一些子类可以通过Player 的实例通过 use() 方法,但其他人不能。只有 1-5% 的元素可用。我将如何以面向对象的方式实现它?
我考虑了以下选项:
- 元素可以包含一个可重写的use() 方法,每个子类都可以重写该方法。这很容易实现,但需要玩家在与世界交互时检查大量对象的 use() 方法。
- 一些子类可以实现一个Usable接口,它定义了use()方法。这要求程序至少跟踪两个列表,一个用于Element,另一个用于Usable。
- Elements 使用一个列表,并使用 instanceof 运算符检查可用性。真的吗?
谁有更好的解决方案?
【问题讨论】:
-
我的第一反应是让子类实现
Usable接口,正如你所提到的。这有什么问题?
标签: java inheritance interface java-7