【问题标题】:Code refactoring for integration four projects to one project四项目合一项目代码重构
【发布时间】:2013-07-29 03:58:52
【问题描述】:

我正在开始代码重构,将四个小项目整合为一个项目,四个项目非常相似。 项目的一般逻辑是这样的:一个http-server接收请求,请求为json格式,例如A(我们称A有两个对象:a_key, b_key)

 {a_key : a_value, b_key : {bb_key: {b_key1 : b_value1}}}  

但是这四种请求并不相同,它们之间有一点不同。例如:第二个项目接收请求是这样的B(我们称B有三个对象:a_key,c_key,d_key)

 {a_key : a_value, c_key : {cc_key: {c_key1 : c_value1}},d_key: [dd1, dd2, dd3]} 

如上,所有请求都是JSON格式,不同的是“某个key”可能有不同的名字(例如:bb_key, cc_key),参数个数也可能不同(例如:B有 dd_key 参数)。我不能确定具体参数的名称和数量。 此外,所有响应都是 JSON 格式,但作为请求,它们之间略有不同。过程类似,根据参数,经过一些过滤后,返回响应。

我觉得这个重构的难点是Request和Response的一般性,现在我们四个项目中,大部分代码都是类似的,只是Request和Response有点不同,我们的代码使用 Java,我们使用 Jackson 来翻译每个请求,我们为请求中的每个对象定义一个具体的类(例如:a_key、b_key、c​​_key、d_key)。我不想为 4 种类型的请求定义这么多的对象类,因为只有一个或两个参数不同。现在我不知道一般这个请求,有人有想法吗?谢谢!

【问题讨论】:

    标签: java json refactoring request response


    【解决方案1】:

    在泛型类中,将您的 json 参数转换为 HashMap。实现Factory Design pattern,这样Factory 类将根据HashMap 中是否存在所需的键返回适当的过滤器。使用返回的过滤器来处理您的结果并返回 JSON 响应。

    【讨论】:

    • 是的,一开始我想把json参数保存在hashmap中,但是这意味着我做的工作和Jackson一样,Jackson是用来分析和翻译Json的,我不想做同样的工作。您还有其他建议吗?
    • 我不太明白你的意思.. Jackson 用于在 java 对象中翻译 JSON 字符串,这里建议的对象是 hashmap.. 你想直接在字符串中解析键
    • 我找到你了!但是对于 hashmap,对于每个对象,我都应该定义一个具体的类。因为请求参数之间存在一些差异。所以无论如何,我应该定义一个 Java 类来存储请求中的参数,所以,我需要定义四个具体的类吗?
    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 2010-12-24
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多