我正在开发一个使用xslt转换xml文档的应用程序。
应用程序有一个设置对话框,用于设置
等值* input
* output (directory)
* stylesheet
* and so on...
用户还可以选择转换为pdf,xhtml等,并且上述设置对于每种格式略有不同。现在,我想知道是否有人对如何从设计角度处理这些设置有任何好的想法。我在整个应用程序中使用MVP(模型 - 视图 - 展示器)模式,我为这些设置创建了一个模型类。因为它们将设置存储在不同的地方和不同的方式(在转换的构建文件中),我已经为每种格式类型(PdfModel等)子类化了模型类。但是,除了有不同的存储方式(这促使子类化),它们在某种程度上也具有不同的属性,如我所提到的。例如,xhtml格式需要css属性,而pdf格式需要fo格式化器属性,依此类推。
我试图解决这个问题,并且我可以通过几种不同的方式使其工作正常,所以这没问题。我只是想知道是否有任何具有良好设计模式经验的人可以说明这是否真的是一个很好的方法。对我来说,感觉很多东西对于一个相对简单的事情来说太复杂了。然而,很难找到一个非常优雅的解决方案。例如,如果我如上所述这样做,我可以使用一个接口来编码,这样我可以有几个不同的视图(带有演示者)显示设置,而不必知道将呈现什么样的模型(例如,我有一个属性网格显示除用户设置设置的视图之外的视图中的当前设置。但问题是我必须有一个包含几个不用于每个格式模型的属性的接口。因此对于pdf模型,我将不得不将Css属性设置为不适用或类似的东西。如果我要添加更多特定属性,这可能会变得更糟。
我还尝试了另一个变体,其中我只在接口中有公共属性,然后我编写接口,但是向下转换接收类中的对象以获取子类属性。我不确定这是好还是不好,但它确实有效。也许那很好,但我真的想要一些意见,看看我是不是太复杂了,或者我可以做得更优雅...
我希望能从我的描述中理解这个问题。任何建议将不胜感激!
此致
的Anders
答案 0 :(得分:0)
也许您应该在设计中更多地考虑什么是常见行为,而不是名称的属性或方法。 如果你有一个提供所有属性和相关约束和验证的方法,那就太好了。此方法将通过接口共享。 另一种可能性是,例如一些可以自动确定属性的反射功能。