我要接手一个老项目。现在,我在自己的util类中有了一些类,覆盖了外部库的util类。例如:
public final class StringUtilsXXX extends org.apache.commons.lang3.StringUtils {
}这些类根本不覆盖扩展类的任何方法(将来也永远不会)。我觉得令人困惑的是,大多数对自己实现的调用只是委托给超类。这做法不好吗?
发布于 2014-05-28 08:59:13
是。这是个糟糕的做法。其原因在于它将您自己的类紧密地连接到第三方库中。我相信你的前任之所以这么做,是因为如果有一天他需要替换commons,他只需要修改一段代码。他这么做可能是因为从lang2升级到lang3所带来的挫败感。
他应该这样做的,应该是创建一个StringUtil接口,并编写不同的实现(您可以使用lang2实现StringUtil,使用lang3,甚至可能是从头实现的备用实现。(如果您需要任何一个版本都不提供的字符串处理,或者需要用旧的Java版本编译某些版本,或者其他什么)。
发布于 2014-05-28 08:43:55
如果没有在子类中重写任何内容或添加任何数据或方法成员,则通常不需要。但是,对于未来的占位符,这可能会被使用。
发布于 2014-05-28 08:56:14
暂时不疼。但是,如果没有提供额外的行为,使用(拥有) StringUtils应该比扩展它更可取。
如果有一个可用于StringUtils的接口,并且您正在指向您的实现(使用它扩展类实例),那么从可维护性的角度来看,它仍然可能是有意义的(这同样取决于您如何实例化它)。
https://stackoverflow.com/questions/23906665
复制相似问题