2014-03-05 64 views
1

我正在爲我的項目實施導出功能。 我有一個關於設計模式的問題。各種格式的設計模式

實現允許從數據庫導出到不同格式(即純文本,CSV,XML,PDF ......)的功能的最佳模式是什麼?

就我而言,我必須在Template Method,Proxy和Observer中進行選擇。我應該選擇哪一個?

謝謝

+1

鑑於PDF V.S. TXT與大象和火星探測器大致相似,你的模式必須非常普遍,接近無用。 –

+0

「在我的情況下,我必須在Template Method,Proxy和Observer中進行選擇,我應該選擇哪一個?」爲什麼只有這些選擇?這是作業嗎? – Fuhrmanator

回答

2

你(可能)尋找Strategy pattern

,從而算法的行爲可以在運行時

本質上可以選擇,你可能有類似的IExporter,然後多個imprimentations XmlExporterPlainTextExporter等,然後在運行時你可以選擇一個或多個實際執行,執行調用wou ld是一樣的,但結果會有所不同。

像:

public abstract class ExporterBase 
{ 
    abstract public bool Export(Record record); 
} 

public class DatabaseExporter : ExporterBase 
{ 
    public bool Export(Record record) 
    { 
    // TODO: Write to DB 
    return true; 
    } 
} 

public class CsvExporter : ExporterBase 
{ 
    public bool Export(Record record) 
    { 
    // TODO: Write to Csv file 
    return true; 
    } 
} 
+0

謝謝,它有很大的幫助 – xtiger

+0

這種方法有一個限制,因爲在抽象函數中,你認爲所有的導出格式都來自特定類型的Record。 實際上,它幾乎沒有發生。 – kidnan1991