Как смоделировать класс Document? - PullRequest
2 голосов
/ 22 декабря 2011

Я использую класс документа.В первый раз это были обычные файлы с такими методами, как New (), Open (), Save ().

New () и Open () возвращают IDocument.Сохранить ничего не возвращает.Как вы можете видеть на диаграмме выше.

enter image description here

В моей программе необходимо использовать расширение xml или zip.Для XML-файлов есть какие-либо проблемы, все методы для этого.Но у меня проблемы с zip-файлом.Я планировал сделать это, когда программа выполнит Open (), извлечет все xml-файлы из zip-файла и вернет все файлы.Но мой Open () возвращает только документ.

Я планировал создать другое свойство с именем CanExtract (), но, возможно, это не очень хорошая идея.Я просто хочу создать хороший и понятный дизайн.

Ответы [ 2 ]

5 голосов
/ 22 декабря 2011

Измените вашу функцию Open (), чтобы она возвращала IEnumerable IDocument:

public IEnumerable<IDocument> Open()

вместо

public IDocument Open()

Затем, когда вы открываете файл XML, он возвращает IEnumerable, содержащий 1 IDocument, и вы можете просто использовать его. Когда вы открываете zip-файл, он возвращает все файлы в zip-формате как документы ID в IEnumerable.

0 голосов
/ 22 декабря 2011

Я бы рекомендовал изменить возвращаемое свойство на Список.Затем вы можете обработать список документов с одинаковым кодом независимо от того, возвращены ли 1 или 20 файлов.

Вы также можете добавить перегрузки для создания и сохранения, которые принимают несколько файлов, и, если эти перегрузки используются, вы можете выполнить автоматическое архивирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...