【问题标题】:Would 10 Java classes hierarchy be too much?10 个 Java 类层次结构会不会太多?
【发布时间】:2011-09-21 12:17:09
【问题描述】:

我已经开发了一个插件加载机制,并且由于插件层次结构设计,主要是抽象级别的编程,并且尽可能少的高级编程,最顶层插件的插件类层次结构可能会达到八。

我一直在加载数十个插件来延长加载时间,而且它似乎加载得很好,所以我想知道继承设计的不良副作用是什么,除了“inheritance vs组合”的设计问题,例如性能问题、加载或运行时问题。

我会补充说,这不是插件模型设计问题,这是插件模型上的应用程序设计问题,应用程序是否应该知道它的所有插件?或者应用程序是否应该定义插件,这些插件可能有自己的插件,主应用程序不会知道它们。该设计对我有用,它节省了我大量的编码时间,问题是它在运行时的表现如何?

提前致谢,

亚当·泽哈维。

【问题讨论】:

    标签: class plugins model abstract-class hierarchy


    【解决方案1】:

    我认为层次结构较深的问题与性能没有太大关系。 它更多的是关于代码的可维护性。无论如何,如果您觉得需要如此深的层次结构,请使用它,或发布更多详细信息。

    当然,你必须注意你在做什么。例如:

    public someClassDeepLevel0{ public void foo(){do something}}
    .....
    public someClassDeepLevel10 extends someClassDeepLevel9{
    public void foo(){
     //do something
     super.foo();
    }
    }
    

    对 foo() 的调用次数与层次结构的深度成正比。如果您正在做这样的事情,那么性能可能非常相关。

    【讨论】:

    • 代码其实很容易维护。并且深度层次结构对于允许各种插件是必要的,这些插件将有自己的逻辑和模型添加到主应用程序。
    • 是的,我想知道这个问题。没有太多实现的方法被覆盖,大部分已经实现的方法可能已经完成了,高层没有用,因为它们的逻辑已经在父插件中实现了。
    【解决方案2】:

    一般来说,不要担心数字。担心设计。如果设计规定了一个深层的层次结构,那就这样吧。如果你重视数字而不是设计,也许你不应该设计。

    【讨论】:

    • 不要光顾,你还没有看到设计或实现!我问了一个关于性能的问题......或类似的问题,而不是你认为我是否应该设计。
    • @TacB0sS:我并没有试图居高临下,但我试图表明设计比仅仅计算层级深度更重要。 @0verbose 指出了一个很好的 潜在 性能问题,但我无法知道您是否有这个问题。通常,如果您遇到性能问题,请通过分析器运行代码并查看瓶颈在哪里。 可能会遇到像@0verbose 这样的情况,但您需要提供更多详细信息来说明此层次结构中的实际代码是什么样的,然后我们才能提出更好的建议。
    • 谢谢,我会在应用程序完全运行后立即查看分析器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2016-11-13
    相关资源
    最近更新 更多