2011-01-12 56 views
1

我有一個包裝的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(); 
    } 
    } 

編輯:我讓這個例子更真實一點。爲早期的快速和骯髒的版本道歉。

+3

爲什麼不確定所有的加載來自緩存的源?爲什麼你想讓它像XmlDocument一樣行事?在構建任何文檔對象之前檢查緩存不是更好嗎? – Skurmedel 2011-01-12 19:18:16

+2

XmlDocument包裝XmlDocument? Eesh。 – 2011-01-12 19:20:55

回答

4

您應該使用工廠模式,而不是將其放入工廠方法中。

所以,你會結束:

public static XmlDocument GetNewDocument(string documentName) { 
    if (cache[documentName] != null) 
     return cache[documentName]; 
    else 
     return new XmlDocument(); 
} 

因此,而不是做一個簡單的新的XmlDocument();你會做的靜態GetNewDocument()的調用方法。

2

我會在這裏重新修復拱門。你錯過了一個問題的分離。爲什麼不使用工廠來檢查緩存是否有該名稱並將該對象返回給您?試圖構建自己的對象似乎對我來說很混亂。

相關問題