小编Jos*_*tes的帖子

序列化逻辑应该在实体还是其他类中

对象序列化逻辑(字段到 XML 或 JSON 名称和值的映射)应该放在哪里?在每个实体对象内部或进入一组仅与序列化有关的不同类?与此问题相关的任何其他最佳实践?

例如:

class Person {
    String name;
}
Run Code Online (Sandbox Code Playgroud)

有些人是这样处理的:

class Person {
    String name;
    public String toJson () {
      // build JSON, use 'name' field
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我们还需要 toXML()、toCSV()、toXYZ() 保持该方向将创建严重污染的代码并破坏单一职责原则,即使使用单个 toJson 方法,恕我直言,该原则已经被打破。

另一种选择,这就是我通常做的:

interface Serializer {  public String toJson (); }

class PersonJsonSerializer implements Serializer {
    private Person p;
    public PersonJsonSerializer (Person p) { this.person = p; }
    public String toJson () {
      // build JSON, use p.name
    }
}
Run Code Online (Sandbox Code Playgroud)

然后工厂根据实体类型分发序列化程序:

class JsonSerializerFactory {
    public Serializer …
Run Code Online (Sandbox Code Playgroud)

java serialization json design-patterns pojo

5
推荐指数
1
解决办法
1150
查看次数

标签 统计

design-patterns ×1

java ×1

json ×1

pojo ×1

serialization ×1