【问题标题】:what is good pattern to de serialize object?什么是反序列化对象的好模式?
【发布时间】:2014-02-21 18:12:26
【问题描述】:

我有一个类想象实体,实体类想要提供反序列化方法,这个方法接受一个 xml 字符串,它将重建对象。 哪个更好看? 1-有一个接受 xmlString 参数的构造函数并且有 deSerilaize 实体。 2- 有一个没有参数的构造函数,然后用 xmlString 调用反序列化方法。 3- Entity 中的静态方法接受 xmString 作为参数并返回反序列化的实体作为函数调用。 或任何其他解决方案?

【问题讨论】:

    标签: c# java design-patterns serialization


    【解决方案1】:

    两者都没有。一个对象根本不应该关心序列化/反序列化自己。这些操作应该由专门用于处理序列化逻辑的对象来处理。

    这不仅使Entity 类更易于使用,而且还使您的架构变得灵活并在未来处理不同的序列化方法。请记住,应用程序中的解耦行为是好的。

    【讨论】:

    • 你的意思是每个对象都应该有另一个对象来序列化/反序列化它?
    • @Mojtaba_Sarooghi - 不,序列化是完全独立的。你的Entity 班级不应该对此一无所知。两者之间应该没有耦合。
    • 然后我必须弄清楚我应该如何在序列化器中序列化每个对象(想象我不想使用属性)我的对象如何向序列化器说它想要序列化的属性?自定义循环引用怎么样?如果我做对了(我不这么认为:-))你的意思是另一个对象知道反序列化实体的整个对象图吗?然后我们又耦合了。(序列化器应该知道实体的细节及其逻辑)
    • @Mojtaba_Sarooghi - 这正是我要说的。序列化器应该对序列化什么(公共字段)以及如何正确处理循环引用等有一些概念。
    • mmmm 所以这里我们有关于私有字段,打开/关闭原则以及逻辑分散的问题,还想象序列化程序应该了解对象图中的任何类......然后我把 de对象中的 /serializer(以防万一我有元数据机会,我喜欢额外序列化器的概念)但同意耦合
    猜你喜欢
    • 2013-12-04
    • 2015-06-01
    • 2010-10-01
    • 2011-04-13
    • 2010-11-21
    • 2010-10-21
    • 2021-10-24
    • 2013-02-13
    相关资源
    最近更新 更多