在C#中设计不同文件格式的编写器(接口与类对比抽象类)

时间:2013-06-18 21:09:28

标签: c# interface abstract-class

在C#应用程序中,我有一个像这样的字符串数组:

string[] myArray = GetStrings(source);

现在我想将这个数组的内容写成不同格式的文件,例如。

  • 单一列表
  • CSV
  • XML
  • ...

但是,我不确定实现这些不同格式的最佳方法是什么。我能想到:

  1. 每种格式一个类,每个格式都有一个Write()方法:
    • FlatListWriter
    • CsvWriter
    • XmlWriter
  2. 包含多种方法的一个类:
    • WriteAsFlatList()
    • WriteAsCsv()
    • WriteAsXml()
  3. 具有Write()方法的接口及其实现类,如1。
  4. 某种抽象类。
  5. 你会推荐什么?

2 个答案:

答案 0 :(得分:2)

您的所有选项看起来都合理且同样出色。选择应基于您系统的其他要求。

如果您希望将来添加格式,并且多人会编写它们,那么每个编写器一个类似乎是更好的选择,因为它们可以更好地分离,您可以动态加载它们并独立测试。

如果要从某些PowerShell脚本中调用这些方法,则同一类中的多个静态方法可能是一种更简单,更方便的解决方案。

答案 1 :(得分:1)

尽管它是个人经验中的一个小工具,但我发现将事物分成自己的类更好。如果您需要添加一些功能,它将为您节省一些时间。

它还为更好的单元测试做好准备,这是我几乎在我编写的任何工具中都做过的最佳实践。它可以带来更好的代码并节省我测试应用程序的时间,如果你编写联合测试,每个编写器的单独类将帮助你。请阅读Roy Osherove's Blog有关此问题的更多提示。

希望这个建议有所帮助。