行为是否在只被一个(或几个)子类使用的超类中实现?

将此行为移到子类中。

起初,某一种方法对所有类都是通用的,但实际上只在一个子类中使用。当计划的特性未能实现时,就会出现这种情况。

这种情况也可能发生在从类层次结构中部分提取(或删除)功能之后,只留下一个方法在一个子类中使用。

如果您看到一个方法被多个子类所需要,但不是全部,那么创建一个中间子类并将该方法移到其中可能会很有用。这可以避免将一个方法下推到所有子类所导致的代码重复。

提高职业连贯性。方法位于您希望看到它的地方。

在子类中声明方法,并从父类复制其代码。

从超类中移除该方法。

找到所有使用该方法的地方,并验证它是从必要的子类调用的。