Помогите а то мозги уже кипят Есть некий проект написанный на Visual Basic 6, который обеспечивает считывание и запись смарт-карт трех разных типов, через три разных ридера. Ридеры несовместимы с собой ни на уровне "железа" и SDK у них разный, карты которые читают ридеры тоже несовместимы между собой по системе команд APDU. Сейчас проект представляет собой адский, трешовый говнокод с сотнями Goto и не читаемым кодом. Надо разгрести авгиевы конюшни, построить красивую объектную модель, выкинуть говнокод и т.д. Вот я нарисовал примерную схему проекта.
Должен быть один класс Readers, в котором коллекция подключенных ридеров, класс должен выкидывать события о подключении/отключении ридеров и событие о приходе/уходе карты. Мозги заклинило на этапе куда привинтить класс Cards? Экземпляр должен создаваться в каждом классе CardMan, Feig, MicroEM или в классе Readers? Методы чтения/записи на карты реализовывать в классах CardMan, Feig, MicroEM или в классах ICODE SLI, Mifare1K, MifareUltraLight?
Вопрос чисто по-объектной архитектуре приложения. Для упрощения карты можно представить в виде флешек с разной системой команд, а ридеры USB разъемы для подключения этих флешек.
Да и впоследствии этот проект должен будет портироваться на VB.NET и Java, поэтому важно чтобы структура классов была реализована правильно.