2016-05-29 67 views
0

在我的github回购中,我有类的层次结构,当然还有序列化/反序列化机制。Java类和接口命名故障

我手动序列化它们通过外部化,我希望采取一切产生价值的代码,需要实例序列化了这个班,以保持所有简单和灵活(或只是把这个烂摊子)

所以我基本上想要做的是创建SerializationHelper s和DeserializationHelper的类,其中特定类的名称将是NameOfClassSerializationHelper

的名字,像这样在最坏的情况下29个字符,但我认为这是太多了。当然,它提供了对发生的事情的更好的理解,名称少于50个字符,用户永远不会看到这些类。

下面是一些辅助类接口层次的scatch。 interfac hierarchy

因此,大家可以看到我减少SerializationSerDeserializationDeser但好像它伤害readabuility。

例如类,它实现TrieSerializationHelper将有名称LinkedTrieSerializationHelper

有中的一个麻烦:我不能把那些序列化/反序列化的助手到另一个包,因为他们使用的一些包的私有类(Node,你可以从WordGraphDeserHelperrestoreRooot方法见)。

所以我完全糊涂了如何做的更好,我必须做什么。提前致谢。

+0

的'Helper'字刚刚产生噪音。为什么不'Serializer'和'Deserializer'? – plalx

+0

@plalx因为他们不直接进行序列化 –

+0

好吧,它是做什么的? – plalx

回答

1

您可能还需要有创造这样Externalizer接口与具体实现(TrieExternalizer)和移动所有的逻辑,你的主类(我想,他们是TrieDAWG)不会与序列化/反序列化超载。

实施例:

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); 
    } 
} 
+1

对不起,反应迟缓,并且是的,你的想法是好多了,然后我的,你把串行/解串正好整个逻辑的'Externalizer'接口后代(通过调用readressing),并减少数的包装类 –