首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在固态编程中应该把“序列化”放在哪里?

在固态编程中应该把“序列化”放在哪里?
EN

Stack Overflow用户
提问于 2020-07-14 22:07:37
回答 1查看 81关注 0票数 1

我有一些业务对象,我想将它们从.yaml文件序列化(反)成file文件。

因为我希望.yaml是人类可读的,所以我需要对serializedeserialize方法有一定程度的控制。

序列化逻辑应该放在哪里?

A)如果我教每个对象,如何反/序列化自己,但这可能违反了single-responsibility-principle

B)如果我把它放在一个通用的serialization模块中,可能会违反open-closed-principle,因为将来会添加更多的业务对象。此外,现在需要在两个位置执行对对象的更改。

对于小型应用程序来说,解决这个难题的可靠方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2020-07-17 11:18:25

通常在这种情况下,您会希望业务对象处理它们自己的序列化。这并不一定违反单一责任原则,该原则断言每个对象都应该有一个工作和一个老板。这仅仅意味着一个作业包含可序列化。用户拥有业务对象,并希望能够对其进行序列化,因此对可序列化的需求来自与其他需求相同的地方--用户。

不过,也有一些危险的地方。首先,您是否真的需要坚持业务对象是可序列化的,或者您是否可以让用户决定它们是否可序列化?如果您强加了可序列化要求,那么很可能违反了SRP,因为随着序列化系统的发展,您将对对象施加您自己的要求。

其次,您可能需要仔细考虑这些对象用来序列化自身的接口。一定要是yaml吗?为什么?它必须是一个文件吗?尽量不要强加可能会发生变化的需求,因为它们依赖于您在系统的其余部分中做出的特定实现决策。这最终也违反了SRP,因为他们必须根据来自两个不同来源的需求来发展这些对象。最好是对象本身启动它们自己的序列化,并且可以最大限度地选择实现。

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

https://stackoverflow.com/questions/62897076

复制
相关文章

相似问题

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