2010-01-22 91 views
1

我開發使用XSLT轉換XML文檔的應用程序。設計模式和配置設置

應用程序具有類似

* input 
* output (directory) 
* stylesheet 
* and so on... 

用戶設置值的設置對話框也可以選擇變換到PDF,XHTML等,並設置上述用於每種格式略有不同。現在,我想知道是否有人從設計角度對如何處理這些設置有什麼好的想法。我爲應用程序整體使用MVP(模型 - 視圖 - 演示者)模式,並且爲這些設置創建了模型類。因爲他們將設置存儲在不同的地方和不同的方式(在構建文件進行轉換)我已經爲每種格式類型(PdfModel等)分類了模型類。但除了有不同的存儲方式(這激發了子類化)之外,它們在某種程度上也有不同的屬性,正如我所提到的。例如,xhtml格式需要css屬性,而pdf格式需要fo格式化程序屬性,依此類推。

我試圖來解決這一問題,我得到它在幾種不同的方式工作得很好,所以這是沒有問題的。我只是想知道,如果任何具有良好設計模式經驗的人都可以闡明一下,如果這真的是一個很好的方式來做到這一點。它感覺對我來說很多,它對於一個相對簡單的事情來說太複雜了。然而,很難得到一個真正優雅的解決方案。舉例來說,如果我這樣做,如上文所述,我可以用一個接口,代碼和這樣我可以有幾個不同的視圖(帶主持人)顯示的設置,不必知道什麼型號將呈現(例如,我有一個屬性網格顯示除了用戶設置設置的視圖之外的視圖中的當前設置)。但是,這個問題是,我必須有一個接口,其中包含幾個不用於每個格式模型的屬性。所以對於pdf模型,我將不得不將Css屬性設置爲不適用或類似的東西。如果我要添加更多特定的屬性,這可能會變得更糟。

我也試過另一種變體,我只有在接口的通用屬性,然後我的代碼的接口,但在向下轉換接收類對象,以獲取子類的屬性。我不確定這是否好,但它的工作原理。也許這很好,但我真的很喜歡一些輸入來找出我是否過於複雜的事情,或者我可以做得更優雅...

我希望可以從我的描述中瞭解問題。任何建議將不勝感激!

問候,

安德斯

+0

,如果你發佈你當前什麼樣的屬性界面將是,如果你正在尋找一些最佳實踐幫助的想法可能會有所幫助。那些試圖回答的人可能有一些代碼需要處理。 – justkt 2010-01-27 13:24:04

回答

0

也許你應該考慮在設計中更多關於什麼是共同的行爲,叫不上名字的屬性或方法。 如果你可以有一個提供所有屬性和相關的約束和驗證的方法,那將是很好的。該方法將通過接口共享。另一種可能性可能是例如一些可以自動確定屬性的反射功能。

+0

我不確定我明白你的意思。在Head First OOA&D書中,他們有一個儀器屬性的例子,他們在儀器類中嵌入了「spec」類。 spec類有一種Dictionary,它保存可以在不同樂器之間變化的屬性。不是一種方法,但它是這樣的嗎?我只是有點不喜歡,因爲不是能夠指固定資產在另一個類我必須寫字符串鍵:Instrument.Properties(「numOfStrings」,6)。你能提供簡單的例子嗎? – Anders 2010-01-22 10:50:49

+0

我正是那樣。我知道你不喜歡你必須使用這些屬性的方式,爲了克服這一點,需要一個動態的OOP語言,無論如何它都會這樣做,但是當語法糖和MethodMissing是普通行爲時,當沒有指定的屬性時。 – 2010-01-25 08:08:14

+0

好的,不是我希望的答案,但也許沒有更好的辦法,就像你說的那樣。要麼是字典,要麼接受具有通用接口的未使用屬性......感謝您的輸入! – Anders 2010-01-25 08:21:06