使用C#在Builder设计模式中集成序列化和反序列化

And*_*ndy 6 c# xml design-patterns

我正在实现Builder Pattern以生成一组对象.然后,必须将这些对象序列化为XML并从XML反序列化.

我知道如何执行序列化和反序列化但是我不确定如何将它集成到设计模式中.

例如,假设我的代码使用构建器来创建产品foo和bar.我的第一个想法是在每个产品上放置一个序列化函数,因为每个产品都知道要序列化的内容.

我的下一个想法是将反序列化放在Director或ConcreteBuilder中.

我不喜欢的是序列化和反序列化函数将位于不同的位置 - 一个用于声明foo和bar对象的文件,另一个用于文件中的其他内容.我担心在我处理产品类时,它们可能最终会变得彼此不同步.

我最后的想法是让Director或ConcreteBuilder执行序列化和反序列化.我不喜欢的是产品然后必须知道使用了哪个构建器或知道Director是谁.

澄清 - 有两种情况可以创建产品:

  1. 用户单击用户界面中的按钮
  2. 用户加载XML项目

And*_*ndy 0

我当前的解决方案是让 Product 执行序列化,让 ConcreteBuilder 执行反序列化,然后将 Product 及其 ConcreteBuilder 声明放入同一个源文件中。

尽管该任务分布在两个类中,但它至少保存在一个文件中。

如有更好的解决方案,我们将不胜感激。