0

我正在研究一些Java,但我不太确定如何解决这个问题,至少不是没有我想避免的丑陋。我有一个父抽象类,比如说Item。Item 有三个子类,ItemA,它是具体的,另一个抽象类,ItemB,它本身有两个具体的子类,ItemB1 和 ItemB2。ItemA 只是一个存根,如果 Item 本身可以变得具体,则可能不需要存在,但我不确定是否需要存根,具体取决于解决方案。所有这些都必须从 Item 或父接口继承,因为它们将位于许多 Collections 中。

现在,我们有了这个 Items 层次结构。有趣的是,Items 有一个可选的 object 字段,假设它是一个名为 Functionality 的对象。任何具体类都可能具有功能对象,但有些则不会。它需要存在于某些人身上,但不应该存在于其他人身上。我想避免在 Item 中拍打它并一直检查它是否存在。这是可能的,但让我觉得有点难看。我认为将层次结构拆分为两个单独的树也不是真的可行,因为我主要是用一个额外的数据复制一堆类。

遇到这种情况该怎么办?我最初考虑使用装饰器,但这意味着每次我需要查看它是否具有功能字段时都要疯狂地进行类型检查以查看它是否是 FunctionalityDecoratedItem 或类似的东西,并且我已经在进行一些类型检查以确定什么与不同的项目子类型有关。也许我只是在吹毛求疵(我有时倾向于在小细节上挂断)或者我的鼻子阻塞了一个明显的解决方案,但我希望我只是错过了一个模式或技术可以干净地实现这一点。

4

1 回答 1

2

定义一个接口。有些类实现了接口,有些则没有。您可以使用它instanceof来检查对象是否在运行时实现接口。

于 2013-07-05T04:11:49.757 回答