首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >序列化多态JavaScript对象

序列化多态JavaScript对象
EN

Stack Overflow用户
提问于 2016-08-25 23:49:01
回答 2查看 213关注 0票数 3

从概念上讲,我的应用程序有一个接口和许多对象,它们以不同的方式实现接口。对象将由不同的工厂方法创建,随着我的应用程序的发展,将来会有更多的工厂。

例如

代码语言:javascript
复制
var Shapes={};
var Shapes.createCircle=function(radius) {
  return {draw:function...}
};
var Shapes.createRectangle=function(width,height) {
  return {draw:function...}
};

我想在文件中序列化这些形状。我计划让每个对象存储其工厂的名称(例如“JSON”)和一个参数数组(例如,10,20),然后将这些部分保存为Shapes.createRectangle字符串。这样,反序列化的对象就可以恢复它们的所有函数和属性。

例如,为了保存一个对象,我计划存储JSON字符串

代码语言:javascript
复制
{"factory":"Shapes.createRectangle","args":[10,20]}

然后在将来的会话中通过再次动态调用工厂方法来重建对象。

这种序列化多态对象的方法有什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2016-08-25 23:55:29

有可能。只有当这些对象是不可变的,或者您可以更改其状态的唯一方法是可逆地返回到工厂参数时,它才会起作用。

这往往会随着api的增长而变得棘手,但并非不可能。我会检查一个对象是否有serializedeserialize方法,并调用它们,这样您就有了一个很好的模式,如果将来需要的话,如何定制序列化行为。

票数 3
EN

Stack Overflow用户

发布于 2017-04-25 09:38:01

一个缺点是,您将工厂函数名硬编码到数据中。当然,这只是一个问题,如果您稍后决定更改它们...也许只存储对象类型可以更好地应对此类问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39149640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档