Java class&接口命名麻烦
Java class & interface naming trouble
在我的 github 存储库中,我有 class 的层次结构,当然 serialization/deserialization 机制也适用于它们。
我通过 Externalizable 手动序列化它们,我想从这个 classes 中获取所有生成值的代码,例如序列化所需的代码,以保持所有简单和灵活(或者只是取出这个一团糟)
所以我基本上想做的是创建 SerializationHelper
s 和 DeserializationHelper
s classes,其中特定 class 的名称将是 NameOfClassSerializationHelper
.
像这样的名字在最坏的情况下是 29 个字符,但我认为这太多了。是的,当然,它可以更好地理解正在发生的事情,而且名称少于 50 个字符,用户永远不会看到这个 classes.
这里是那些助手 classes 的接口层次结构的一部分。
正如您所看到的,我将 Serialization
减少到 Ser
,将 Deserialization
减少到 Deser
,但似乎会影响可读性。
例如实现 TrieSerializationHelper
的 class 将具有名称 LinkedTrieSerializationHelper
.
还有一个问题:我无法将那些 serialization/deserialization 助手放置到另一个包中,因为它们使用了一些包私有的 class(Node
,如您所见restoreRooot
WordGraphDeserHelper
的方法)。
所以我完全不知道如何做得更好以及我必须做什么。提前致谢。
您可能还想创建类似 Externalizer
具有特定实现的接口 (TrieExternalizer
) 并将所有逻辑移到那里,以便您的主要 类 (我认为,它们是 Trie
和 DAWG
) 不会被 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);
}
}
在我的 github 存储库中,我有 class 的层次结构,当然 serialization/deserialization 机制也适用于它们。
我通过 Externalizable 手动序列化它们,我想从这个 classes 中获取所有生成值的代码,例如序列化所需的代码,以保持所有简单和灵活(或者只是取出这个一团糟)
所以我基本上想做的是创建 SerializationHelper
s 和 DeserializationHelper
s classes,其中特定 class 的名称将是 NameOfClassSerializationHelper
.
像这样的名字在最坏的情况下是 29 个字符,但我认为这太多了。是的,当然,它可以更好地理解正在发生的事情,而且名称少于 50 个字符,用户永远不会看到这个 classes.
这里是那些助手 classes 的接口层次结构的一部分。
正如您所看到的,我将 Serialization
减少到 Ser
,将 Deserialization
减少到 Deser
,但似乎会影响可读性。
例如实现 TrieSerializationHelper
的 class 将具有名称 LinkedTrieSerializationHelper
.
还有一个问题:我无法将那些 serialization/deserialization 助手放置到另一个包中,因为它们使用了一些包私有的 class(Node
,如您所见restoreRooot
WordGraphDeserHelper
的方法)。
所以我完全不知道如何做得更好以及我必须做什么。提前致谢。
您可能还想创建类似 Externalizer
具有特定实现的接口 (TrieExternalizer
) 并将所有逻辑移到那里,以便您的主要 类 (我认为,它们是 Trie
和 DAWG
) 不会被 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);
}
}