【问题标题】:how several enumerations could extend a class that contains methods used for these enumerations in Java?几个枚举如何扩展一个类,该类包含用于 Java 中这些枚举的方法?
【发布时间】:2012-06-21 20:00:01
【问题描述】:

我有两个枚举,在两个包中。我可以有 1000 个枚举,而不是 1000 个包,因为我正在研究一种“单元”架构,每个单元都必须有自己的枚举。

我不想让每个常量都在同一个枚举中以最大化凝聚力。

问题是每个枚举都基本相同,除了常量(适用于每个单元)

所以,我需要重复很多代码,而我不想这样做(我的枚举实现了侦听器,并且方法逻辑是在每个枚举中复制/粘贴,例如)。

我在互联网上查看了枚举扩展模式。我找到了可扩展的枚举模式。

这不是我所需要的。

我正在尝试找到一种解决方案来将我的常量保存在不同的包中,在不同的单元中,但我想要一种抽象类,位于我的枚举可以扩展的包层次结构的顶部。这样一来,我就可以只写一次方法逻辑了。

我知道枚举不能扩展类,它们只能实现接口。

这是我想做的不工作的 UML 草图:

我该怎么做?有规律吗?

几个枚举可以扩展一个包含用于这些枚举的方法的类? (可重复使用)

编辑提示:

我需要使用枚举中的.values(),因为我需要使用常量进行迭代。

【问题讨论】:

    标签: java design-patterns enums extends


    【解决方案1】:

    查看 Effective Java 书中的“类型安全枚举”模式。你可以阅读它在

    http://java.sun.com/developer/Books/effectivejava/Chapter5.pdf

    【讨论】:

    • 是的,但是相同的类型不允许我使用 .values 进行迭代?
    【解决方案2】:

    您不能使用枚举来扩展类或枚举。但是你可以实现一个接口并将接口方法的实现委托给一个帮助类。

    【讨论】:

    • 是的,一种实用程序类..?其实我在想
    猜你喜欢
    • 2015-08-21
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多