如何为Document类建模?

时间:2011-12-22 18:56:51

标签: c# design-patterns

我正在使用文档类。第一次,它是使用New(),Open(),Save()等方法的公共文件。

New()和Open()返回一个IDocument。保存不会返回任何内容。 如上图所示。

enter image description here

在我的程序中,它必须使用xml或zip文件扩展名。对于xml文件,有任何问题,所有方法都适用于它。但我有zip文件的问题。我计划这样做,当程序执行Open()时,从zip中提取所有xml文件并返回所有文件。但是我的Open()只返回一个文档。

我计划创建另一个名为CanExtract()的属性,但这可能不是一个好主意。我只是想创造一个好的设计并且可以理解。

2 个答案:

答案 0 :(得分:5)

更改您的Open()函数以返回IDnumerable的IDocument:

public IEnumerable<IDocument> Open()

而不是

public IDocument Open()

然后当你打开一个xml文件时,它会返回一个包含1个IDocument的IEnumerable,你可以使用它。当你打开zip文件时,它会将zip中的所有文件作为IEnumerable中的IDocuments返回。

答案 1 :(得分:0)

我建议将您的返回属性更改为List。然后,无论是否返回1个或20个文件,您都可以使用相同的代码处理文档列表。

您还可以为创建和保存接受多个文件添加重载,如果使用这些重载,您可以执行自动压缩。