Java:实例化还是继承?

时间:2009-11-17 23:24:41

标签: java inheritance logging instantiation

我正在为我的一个应用程序编写日志服务,但我相信很多其他应用程序都会使用它。在这种情况下,让应用程序扩展一个类并在默认情况下启用所有日志记录(因为某些日志记录,如需要不惜任何代价的应用程序入口点和出口点)或仅使应用程序实例化是否有意义一个新的日志记录对象,然后在需要的地方放置日志记录语句?

3 个答案:

答案 0 :(得分:4)

实例化新的日志记录对象。你的对象毕竟不是记录器,不是吗?

如果从logger继承,则还会出现以下问题

  1. 您的对象可以用作记录器,可能不是它的目的
  2. 您不能继承其他课程
  3. 您无法轻松切换日志记录策略,尤其是在运行时
  4. 一般来说,在两个类之间绘制泛化时应该非常小心。

答案 1 :(得分:2)

不是创建新的日志服务 - 为什么不使用其中一个日志框架?在充分尊重的情况下 - 与您编写的任何内容相比,它们将得到更好的测试和更好的记录!

我不会走下继承路线,这会让你在早期阶段陷入一个可能会发展变化的阶级。

答案 2 :(得分:0)

在OOP中,您必须遵守对象收集数据和逻辑的规律。

如果您的对象必须执行某项任务(服务)或操作某些数据,那就没问题。但它不是记录器。

您应该将事件触发到另一个服务或对象来执行日志。

还要注意你的对象如何知道记录器...注入,组合,工厂......这是关于你的日志框架和你的对象任务。