我有一个类,其实例是一个以标准格式表示消息的对象。这些实例最终作为JSON对象输出,以便它们可以在进程之间传输。
该类有一些非常有用的方法,我用它来验证和控制消息,而无需深入研究对象结构。当我创建消息并将其发送出去时,这很好,花花公子,但是当我收到JSON对象时,它只包含数据,而不包含这些有用的方法。
将这些传入的JSON对象映射到类实例的最佳方法是什么?
我可以想到四种方式......
1)向接受JSON字符串的类添加静态方法,并生成该类的新实例
2)向接受JSON字符串的类添加方法,并将JSON对象映射到该实例
3)在构造函数中有一个可选参数,它接受一个JSON字符串并将其映射到构造中的实例
4)使用工厂方法将班级变成服务。
我很乐意做3,但问题是如果对象格式不正确,我无法返回反馈等。
答案 0 :(得分:1)
1)向接受JSON字符串的类添加一个静态方法,并生成该类的新实例。
这会使代码更难以进行单元测试,并随着功能的变化而扩展。见unit testing and Static methods
2)向接受JSON字符串的类添加一个方法,并将JSON对象映射到该实例。
这是一个好主意。这可能与#4结合使用。如果要支持多个对象/ JSON格式,单独实现此功能可能会变得乏味。
3)在构造函数中有一个可选参数,它接受一个JSON字符串并将其映射到构造中的实例。
我个人认为这是对构造函数的笨拙使用。像JSON验证之类的东西需要抛出异常。
4)使用工厂方法将课程转变为服务。
创建工厂是最具扩展性的前进方式。如果您有多个JSON格式和要映射的对象,请在线下思考。这个中心类将允许您选择正确的映射并随时间处理更改。单元测试也很容易。