设计模式-数据到对象

Tho*_*hom 5 java json design-patterns instance

假设我在文件或数据库中有一些数据。它可以是JSON,XML,YAML,CSV,String []等。

我想用这些数据创建一个模型对象。例如:

数据:

{
    "name": "John Doe",
    "age": "30"
}
Run Code Online (Sandbox Code Playgroud)

型号(伪代码):

class Person {
    Person(name, age) {
        this.name = name;
        this.age = age;
    }
    // business logic
}
Run Code Online (Sandbox Code Playgroud)

一些从JSON数据(伪代码)创建Person对象的代码:

peopleArray = [];
recordSet = aJSONReader.read('file');
for (recordSet as r) {
    peopleArray.add(new Person(r[0], r[1]));
}
Run Code Online (Sandbox Code Playgroud)

您将使用什么根据给定的数据构建模型对象?在我的示例中,我将开始支持JSON。如果我想更改它或支持新的数据格式怎么办?如何解耦此代码?哪种设计模式适合这里?

Tho*_*rig 4

使用策略模式(参见此处)。您想要提供不同的方法来解析数据。一个方法将解析 JSON,另一个方法将解析 XML,另一个方法将读取数据库。每个方法都可以看作是解析数据和生成数据对象的策略。

创建一个通用接口,假设IDataObjectParser使用单个方法,例如public List<DataObject> parse(). 每个解析器都会实现这个接口。然后您可以随时交换解析器,例如在运行时或根据配置文件。