java - 常量应该放在接口(interface)中吗?

标签 java oop design-patterns

我知道将常量放在接口(interface)中通常被认为是不好的做法,但是...

我正在使用观察者模式将事件从对象广播到监听器。

interface DownloadListener 
{
    public void sendEvent(int eventId);
}

广播者使用常量整数来告诉听者哪个事件发生了。

class DownloadTask 
{
    public static final int EVENT_DOWNLOAD_STARTED = 1;
    public static final int EVENT_DOWNLOAD_COMPLETED = 2; //should these go here?

    DownloadTask(DownloadListener listener)
    {
        listener.sendEvent(EVENT_DOWNLOAD_STARTED);
    }
}

将常量放在接口(interface)内会更好吗?我的想法是,接口(interface)是广播公司和听众之间的契约(Contract),因此它应该包含该契约(Contract)的细节(常量)。

我正在为移动设备 (Java 1.3) 开发,所以很遗憾不能使用枚举类型。

最佳答案

接口(interface)描述服务,所以如果常量是服务描述或定义的一部分,它应该放在接口(interface)中,这样接口(interface)的每个实现都可以重用它们。在您的情况下,例如常量应该转到接口(interface)

关于java - 常量应该放在接口(interface)中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424423/

相关文章:

java - 使用 XStream 生成 header 标签

java - 断言网络元素不存在 - 快速解决方案?

java - NetBeans 是否有任何 "collapse all"导航器 View 中打开目录的快捷方式?

c# - 在库 api 中使用字符串与类型

c++ - 具有默认属性的访问者模式

java - 在 Kotlin 中实现返回 Collection 的 Java 方法

java - OOP 和堆/栈

ruby-on-rails - 对这种方法中 self 的含义感到困惑

C++ 代码迁移。方法实现一直说缺少类型

c# - 这门课对任何人都有意义吗