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