java - 访问者模式,并非所有访问者都对接口(interface)中的所有方法都有合理的实现

标签 java jakarta-ee visitor-pattern

我有一个接口(interface)可序列化。该类具有适用于我的应用程序中的每个 Item 子类的方法。然而,并非所有实现 Serialized 的类都具有 serialize 方法的合理实现。由于我的应用程序中的安全限制,某些序列化程序不应该能够序列化所有不同的对象。

我该如何解决这个问题?我应该序列化一条消息“由于安全限制,序列化器无法序列化对象。”还是应该抛出 RuntimeException?或者还有其他方法可以“修复”这个问题吗?

最佳答案

你的逻辑会违反一项重要原则:Interface Segregation Principle

The Interface Segregation Principle states that clients should not be forced to implement interfaces they don't use. Instead of one fat interface many small interfaces are preferred based on groups of methods, each one serving one submodule.

因此,我将创建两个不同的基类来实现您的要求:

  • 项目
  • 可序列化项目

您的访问者只会依赖 SerializedItem 对象:

public void visit(SerializableItem sItem) 

当然,只要访问者不这样做,就有可能在一种 AbstractItem 中收集两个类的共同行为(与序列化无关)不处理它。

关于java - 访问者模式,并非所有访问者都对接口(interface)中的所有方法都有合理的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443354/

相关文章:

java - java中的泛型: identify Type of T

java - J2EE 项目要运行在不同的计算机上需要什么?

java - 使用 CDI 生产者会导致不明确的依赖项异常

java - 标准java web应用目录结构与Eclipse生成的目录结构的区别

java - 连接到 TOR Java

java - 我怎样才能让这个方法在我的循环中更新GUI?

java - 无法在 Resteasy 和 EJB 3.0 中转换为 javax.ws.rs.core.Application

c++ - 跟踪图形访问者中访问过的节点

java - 一种查找 Java 对象初始化为什么而不是声明类型的方法?

java - 访客模式中的泛型矫枉过正