Я создаю библиотеку классов с множеством различных опций для возможных настроек. Например, вы можете спроектировать свой класс так, чтобы он мог выполнять FeatureX (), или вы можете спроектировать свой класс так, чтобы он мог выполнять FeatureY ().
В обычных условиях вы просто создадите интерфейс IFeatureX с чисто виртуальным методом с именем FeatureX и другой интерфейс IFeatureY с чисто виртуальным методом с именем FeatureY. Если у класса есть и FeatureX, и FeatureY, он может наследовать от обоих, нет проблем.
Моя проблема в том, что если для функции / метода требуется объект, который может выполнять функции FeatureX () и FeatureY ()? Как мне выразить тип, предпочтительно в C ++, но также может помочь ответ в Java, чтобы гарантировать, что и FeatureX, и FeatureY доступны?
Создать ли другой интерфейс IFeatureXY, который наследуется от IFeatureX и IFeatureY? Ладно ... если бы было только две особенности, я мог бы сойти с рук. Но если есть, скажем, 10 функций, число возможных интерфейсов становится огромным.
Есть ли простой способ сделать это? Я пытался решить проблему, используя шаблоны C ++ и делегирование, но не зашел слишком далеко. Я надеюсь, что есть простое решение для этого, и, вероятно, есть одно, которое я просто упустил из виду.
Я ценю любую помощь и совет, который у вас есть, ребята.
Спасибо.