【发布时间】:2017-05-26 12:52:25
【问题描述】:
我不确定我是否正确理解了耦合。有人告诉我,如果我将数据移出到外部数据文件(如 JSON)中,它会减少整体耦合。 (我同意这一点。)
但是,如果我要创建一个对象来保存包含在 JSON 中的数据,其字段直接映射到 JSON 的结构,那是否仍会在对象和 JSON 之间创建紧密耦合的链接?
例如:
"images": [{
"source" : "images/foo.png",
"size" : "thumbnail",
"alt" : "Foo"
},
{
"source" : "images/bar.png",
"size" : "thumbnail",
"alt" : "bar"
}]
然后我们有一些对象,应用程序模型的一部分:
function FooBarImage (jsonObj) {
this.source = jsonObj.source;
this.size = jsonObj.size;
this.alt = jsonObj.alt;
}
FooBarImage.prototype.doStuff = function () { ... }
这里,FooBarImage 对象知道 JSON 对象的内部格式。如果 JSON 数据的格式发生变化(例如,我们要添加一个新字段,或者重命名一个现有字段),我们是否也必须对构造函数进行更改?
是我误解了什么,还是有其他方法可以进一步解耦代码和数据?
【问题讨论】:
-
JSON 的全部意义在于传输对象。无需创建映射到 JSON 对象的第二个对象。
-
@Andreas 虽然你是对的,但“JSON 对象”这个词已经变得相当普遍,很明显 OP 想要说的是什么。虽然像您链接到的帖子这样的帖子内容丰富,但您的评论可能会被解读为扯皮。
-
@ScottMarcus 更准确地说,它实际上更像是将 JSON 数据映射到具有相同字段和一些方法的另一个对象。据我了解,JSON 是一个纯数据容器,所以我认为我不应该在 JSON 数据本身中有方法,因此需要另一个对象。
-
@Andreas 我知道;我只是为参数选择了名称
jsonObj,以明确传递的是哪种数据。实际上,我可能只是使用data或其他名称。
标签: javascript json decoupling