在类层次结构中间有空类是否代码有问题?

Han*_*etz 5 language-agnostic oop coding-style

我有时最终得到一个类层次结构,其中我有一个具有一些常见功能的抽象基类,以及一些属于两个(很少更多)组的实现类,在某些情况下我想要区别对待.一个例子是抽象树节点类和不同的分支和叶实现,我想在某些点区分分支和叶子.

然后,这些中间类仅用于流控制中的"is-a"语句,并且它们不包含任何代码,尽管我有过这样的情况,他们稍后会"增长"某些代码.

这对你来说有点难闻吗?在我的树示例中,一种替代方法是向基类添加isLeaf()/ isBranch()抽象方法并在中间类上实现这些方法,但这对我来说似乎没有任何好处,实际上,除非我的意思是要有类可能会同时出现多种情况.

KLE*_*KLE 1

一般来说,空类是一种代码味道。

我同意你的isLeafisBranch方法是正确的选择。他们添加有关对象的信息,这很有帮助。(这是因为,在超类上,您无法表达子类是“叶子或分支”)。


结果相反的两种方法也可能被认为是代码重复

您只能使用一个...但我建议返回一个枚举值 LEAF 或 BRANCH。