【问题标题】:Java Static ArrayList<Listener>Java 静态 ArrayList<Listener>
【发布时间】:2013-07-04 00:11:31
【问题描述】:

我正在研究一个小型 java 库,我得到了一个名为 Operation 的类,它是一个要处理的任务,现在所有任务都在单个线程执行器中运行(按顺序)。

我制作了自己的 Listener 和一切能够监视当前操作的进程。

我将我的观察者存储在我的 Operation 类中的 CopyOnWriteArrayList 中。

我最担心的是我会创建很多 Operation 对象,而且我不太可能注册超过 1-2 个观察者。我真的不喜欢为每个 Operation 实例创建一个 CopyOnWriteArrayList 的想法。

我想过让我的 CopyOnWriteArrayList 成为静态并创建一个静态方法来让观察者注册所有操作,但我不知道这似乎是一个糟糕的设计理念......

有人有更好的主意吗?

【问题讨论】:

    标签: java static listener observer-pattern


    【解决方案1】:

    我真的不喜欢创建 CopyOnWriteArrayList 的想法 每个操作实例

    为什么不呢?这是正确的做法。如果您担心内存或性能,那么我建议您查看CopyOnWriteArrayList 的来源 - 它比您想象的更有效。它本质上是由一个数组支持的,它的Iterator (COWIterator) 只是索引到它的支持数组。 new CopyOnWriteArrayList() 以空数组开始,因此内存开销是 CopyOnWriteArrayList 本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-03
      • 2018-10-21
      • 2011-01-04
      • 2014-10-14
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多