问候,
我有一个特定的对象,可以从文件构造,如下:
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;
}
}
我想,在本质上,说“好的,现在这个对象我们刚刚被反序列化了,这是我们实际上的对象。”有几种方法可以做到这一点,我想知道哪种方法被认为是最好的做法。我的想法是:
答案 0 :(得分:3)
您的第二个选项是所谓的factory method,是一种常见的设计技巧。如果您确实使用了这种技术,您可能会发现在实际加载类之前需要知道要加载的类的类型。如果遇到这种情况,可以使用更高级别的工厂类型来查看流,并为适当类型的类调用工厂方法。
答案 1 :(得分:2)
使用静态方法而不是构造函数没有任何问题。实际上,它有一个number of advantages。
答案 2 :(得分:1)
我总是使用静态方法。通常它是一种加载的层次结构,因此只有根对象需要该方法。并且它在.NET框架中并不是一种非常不寻常的方法(例如Graphics.FromImage),因此对于您的类用户来说应该没问题。