【发布时间】:2010-10-20 19:06:22
【问题描述】:
我正在尝试为以下问题找到一个优雅的 OOP 解决方案。
假设我们有一个 POJO 集合,在这种情况下是事件,其中每个 POJO 可能是不同的类。我们需要处理这个集合,对每个 POJO 类(或类型)使用不同的规则。
一个基本假设是我们不能用适当的处理程序来装饰 POJO,因为我们不控制它们的生成,并且按原样接收集合。因此,任何对此的机制都落入了同一个陷阱。但是,第 3 项仍然处理这种可能性。
有一些可能的解决方案,一些非常丑陋,一些更优雅但复杂:
- 最明显的解决方案是使用 instanceOf 运算符将 POJO 传递给处理程序。
- 对 1 的稍好的修改是为此使用责任链,使用链式调度程序,以便新类型只需要一个新的调度程序。但是,每个调度程序仍然需要 instanceOf。
- 创建增强对象,而不是 POJOS,其中每个对象都包含对其处理程序的引用。这会在 POJO 和我们的处理器之间建立耦合。
- 创建(我知道如何在 Java 中正确执行此操作)一个调度程序服务,该服务将处理程序注册到特定事件类,并使用泛型(Typesafe 容器,如在有效的 java 中)将事件调度到处理程序。
4 是最优雅的,但我想知道是否有更好的想法。
【问题讨论】:
标签: java language-agnostic design-patterns