Разработка отдельного класса / фреймворка, требующего внешних данных - PullRequest
2 голосов
/ 11 сентября 2011

Для примера, у меня есть класс с именем FileIdentifier. Этот класс:

  • Имеет метод идентификатора, который принимает File и возвращает String, представляющий тип.
  • Требуются внешние данные, поскольку возможны новые форматы файлов.

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

Ответы [ 2 ]

2 голосов
/ 11 сентября 2011

Попробуйте с цепочкой ответственности .

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

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

Конечно, ваш базовый класс для цепочки (Handler,как вызвано dofactory.com) может предоставить полезные защищенные методы для своих подклассов, чтобы облегчить их работу.

2 голосов
/ 11 сентября 2011

Все зависит от того, как вы определяете тип файла. Из вашего вопроса я бы предположил, что это не такой простой процесс, как разбор для расширения файла ...

При этом, возможно, вы могли бы просто использовать внешний файл XML, или INI, или таблицу db и т. Д., Которые отображают типы файлов и просто заставляют класс читать эти данные и возвращать что угодно ... (На самом деле вы хотели бы использовать несколько классы, чтобы держать вещи в чистоте.) Таким образом, только внешние данные должны были бы быть обновлены, и класс остается неизменным.

...