代码之家  ›  专栏  ›  技术社区  ›  geowa4

在C中从序列化XML加载对象的最佳实践#

  •  1
  • geowa4  · 技术社区  · 18 年前

    问候语,

    我有一个可以从文件构造的特定对象,例如:

    public class ConfigObj
    {
         public ConfigObj(string loadPath)
         {
              //load object using .Net's supplied Serialization library
              //resulting in a ConfigObj object
              ConfigObj deserializedObj = VoodooLoadFunction(loadpath); 
    
              //the line below won't compile
              this = thisIsMyObj; 
         }
    }
    

    在本质上,我想说“好吧,现在这个我们刚刚反序列化的对象,这就是我们实际上是的对象。”有几种方法可以做到这一点,我想知道哪一种被认为是最佳实践。我的想法是:

    • 为ConfigObj类构建一个静态方法,该类充当加载对象的实际构造函数。这听起来好多了,但不是最佳实践。

    不过,我对这两个都不太满意。这里公认的最佳实践是什么?

    3 回复  |  直到 18 年前
        1
  •  3
  •   Greg Hewgill    18 年前

    你的第二个选择是所谓的 factory method 是一种常见的设计技术。如果使用这种技术,您可能会发现在实际加载类之前,您需要知道要加载的类的类型。如果遇到这种情况,可以使用更高级别的工厂类型,它查看流并为适当类型的类调用工厂方法。

        2
  •  2
  •   Community Mohan Dere    9 年前

    用静态方法代替构造函数没有什么错。事实上,它有一个 number of advantages

        3
  •  1
  •   OregonGhost    18 年前

    我总是使用静态方法。通常它是一种加载的层次结构,因此只有根对象需要该方法。在.NET框架中(例如Graphics.FromImage),这并不是一种不寻常的方法,所以它应该适合您的类用户。