从概念上讲,我的应用程序有一个接口(interface)和许多以不同方式实现该接口(interface)的对象。对象将通过各种工厂方法创建,随着我的应用程序的发展,将来会有更多工厂。
例如
var Shapes={};
var Shapes.createCircle=function(radius) {
return {draw:function...}
};
var Shapes.createRectangle=function(width,height) {
return {draw:function...}
};
我想在文件中序列化这些形状。我计划让每个对象存储其工厂的名称(例如“Shapes.createRectangle”)和一个参数数组(例如 [10,20]),然后将这些部分保存为 JSON 字符串。这样,反序列化的对象可以恢复其所有功能及其属性。
比如保存一个对象我打算存储JSON字符串
{"factory":"Shapes.createRectangle","args":[10,20]}
然后通过再次动态调用工厂方法在未来的 session 中重建对象。
这种序列化多态对象的方法有什么问题吗?
最佳答案
有可能。仅当这些对象是不可变的,或者如果您可以更改其状态的唯一方法是可逆回到工厂参数时,它才会起作用。
随着 api 的增长,这往往会变得棘手,但并非不可能。我会检查一个对象是否有 serialize
和 deserialize
方法并调用它们,这样你就有了一个很好的模式如何在将来需要时自定义序列化行为。
关于javascript - 序列化多态 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149640/