我有一个接口(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/