【问题标题】:Java: Instantiate or Inheritance?Java:实例化还是继承?
【发布时间】:2009-11-17 23:24:40
【问题描述】:

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

【问题讨论】:

    标签: java inheritance logging instantiation


    【解决方案1】:

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

    如果你继承自logger,你还会遇到以下问题

    1. 您的对象可以用作记录器,这可能不是它的用途
    2. 您不能从其他类继承
    3. 您无法轻松切换日志记录策略,尤其是在运行时

    一般来说,在绘制两个类之间的概括时应该非常小心。

    【讨论】:

      【解决方案2】:

      与其创建一个新的日志服务 - 为什么不使用其中一个日志框架呢?恕我直言,它们将比您编写的任何东西都经过更好的测试和更好的记录!

      我不会沿着继承路线走,这会使您在早期阶段与一个可能会发展和变化的类联系在一起。

      【讨论】:

      • 你是对的。我最好使用现有的日志库。我想到这个的唯一原因是因为它并不是一个真正成熟的日志服务,但也提供了一些项目特定的功能。无论如何,感谢您的回复。
      【解决方案3】:

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

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

      您应该向另一个服务或对象触发一个事件来记录日志。

      还要注意您的对象如何了解记录器...注入、组合、工厂...这与您的日志记录框架和对象任务有关。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-03
        • 1970-01-01
        • 1970-01-01
        • 2011-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-27
        相关资源
        最近更新 更多