我有一个包装的XmlDocument类,在其中,我想检查是否有一个具有相同名称的缓存XmlDocument对象,然后“成为”该对象。有更好的方法吗?
namespace myXmlUtilities {
class SpecificAutoLoadingCmsXmlDocument : System.Xml.XmlDocument {
private string documentName = "joiseyMike.xml";
public void loadFromCms() {
if (cache[documentName] != null)
LoadXml(((XmlDocument)cache[documentName]).OuterXml);
else
// ... load from the CMS's database.
}
public SpecificAutoLoadingCmsXmlDocument() {
loadFromCms();
}
}
编辑:我让这个例子变得更加真实。为早期的快速和肮脏版本道歉。
答案 0 :(得分:4)
您应该使用工厂模式,这样您就可以将此逻辑放入工厂方法中。
所以你最终得到了:
public static XmlDocument GetNewDocument(string documentName) {
if (cache[documentName] != null)
return cache[documentName];
else
return new XmlDocument();
}
因此,您不必执行简单的新XmlDocument();而是调用静态GetNewDocument()方法。
答案 1 :(得分:2)
我会在这里修改拱门。你错过了一些担忧。为什么不使用工厂检查缓存是否具有该名称并将该对象返回给您?试图构建自己的对象对我来说似乎很混乱。