正如所說的「如果我們有超類和n個子類,並且基於提供的數據,我們必須返回其中一個子類的對象,我們使用工廠模式「使用工廠設計模式時有點複雜
情況: 我有20個客戶端,更多可以隨時添加。每個將提供一個文件,從中提取數據並將其插入到數據庫中。每個客戶都有自己的維護文件的風格,即數據字段位於不同的地方。
解決方案: 爲此,我想我將不得不使用工廠設計模式,創建20個班,每個班都有自己的執行每一個領域,比如如何和它有哪個地方在文件解壓縮。當新的客戶被添加時,我只是創建一個新的類,我完成了,不需要其他更改。
我是否正確到這裏?
複雜性: 現在的問題是,客戶提供的文件,可以在任的4種格式(PDF,XLS(X),HTML,TXT)。從這些格式中提取文本的引擎必須是靜態的,就像我使用pdftoXML將PDF提取到XML等一樣。如果我不創建將PDF轉換爲XML的單獨引擎類,那麼我將不得不重新編寫在每個客戶端的類中提供PDF格式的PDF文本提取。 Excel抽取引擎也是如此。
問題: 我該如何將這些引擎裝入工廠模式?如果引擎類是靜態的,並且需要處理pdf的子類,請調用pdf類的提取方法來獲取需要的數據或什麼?
希望我自己清楚,感謝
「客戶端類層次結構模型的提取算法以及」對不起,得到這個? – shabby 2012-07-12 03:18:27
如果多個客戶端使用相同的提取算法,請勿嘗試將共享提取算法放入公共超類。找到另一種分享方式,或許使用策略模式。 – ComDubh 2012-07-12 11:34:16
就像在這種情況下的策略的想法一樣,我認爲我應該去做這件事,但爲什麼不使用公共超類中的任何已知問題呢? – shabby 2012-07-13 03:13:02