Java class&接口命名麻烦

Java class & interface naming trouble

在我的 github 存储库中,我有 class 的层次结构,当然 serialization/deserialization 机制也适用于它们。

我通过 Externalizable 手动序列化它们,我想从这个 classes 中获取所有生成值的代码,例如序列化所需的代码,以保持所有简单和灵活(或者只是取出这个一团糟)

所以我基本上想做的是创建 SerializationHelpers 和 DeserializationHelpers classes,其中特定 class 的名称将是 NameOfClassSerializationHelper.

像这样的名字在最坏的情况下是 29 个字符,但我认为这太多了。是的,当然,它可以更好地理解正在发生的事情,而且名称少于 50 个字符,用户永远不会看到这个 classes.

这里是那些助手 classes 的接口层次结构的一部分。

正如您所看到的,我将 Serialization 减少到 Ser,将 Deserialization 减少到 Deser,但似乎会影响可读性。

例如实现 TrieSerializationHelper 的 class 将具有名称 LinkedTrieSerializationHelper.

还有一个问题:我无法将那些 serialization/deserialization 助手放置到另一个包中,因为它们使用了一些包私有的 class(Node,如您所见restoreRooot WordGraphDeserHelper 的方法)。

所以我完全不知道如何做得更好以及我必须做什么。提前致谢。

您可能还想创建类似 Externalizer 具有特定实现的接口 (TrieExternalizer) 并将所有逻辑移到那里,以便您的主要 类 (我认为,它们是 TrieDAWG) 不会被 serialization/deserialization.

重载

示例:

public interface Externalizer<T> {
    void write(T object, ObjectOutput out);
    void read(T object, ObjectInput in);
}

class TrieExternalizer implements Externalizer<Trie> {
    public void write(Trie object, ObjectOutput out) throws IOException {
        out.writeUTF(object.getSomeField());
    }


    public void read(Trie object, ObjectInput in) throws IOException {
        object.setSomeField(in.readUTF());
    }
}

class Trie implements Externalizable {
    private String someField;
    private static final Externalizer<Trie> externalizer = new TrieExternalizer();

    public String getSomeField() {
        return someField;
    }

    public void setSomeField(String someField) {
        this.someField = someField;
    }

    public void writeExternal(ObjectOutput out) throws IOException {
        externalizer.write(this, out);
    }

    public void readExternal(ObjectInput in) throws IOException {
        externalizer.read(this, in);
    }
}