Я собираюсь добавить класс X, который будет использоваться моими тремя ранее спроектированными классами (A, B и C).
Новый класс X будет содержать данные и функции для новых функций, а также предоставлять услуги классам, которые используют его для скрытия нижних уровней.Проблема в том, что A, B и C будут использовать класс X совершенно по-разному, то есть использовать разные его функции.
Мой вопрос заключается в том, должен ли я предоставить API (или абстрактный базовый класс в C ++) для нового класса X или нет.Если я должен, должен ли этот API быть для класса X или для классов A, B и C?Я где-то читал, что API иногда более тесно связан с этим вызывающим, чем класс, который его реализует.Если я предоставлю один API для каждого абонента, API будет содержать только те функции, которые необходимы конкретному абоненту.
Или я должен просто создать нормальный класс C ++ и позволить вызывающим использовать подмножество открытых функций X в каждом из A, B и C, хотя они «технически» могут использовать их все?Функции класса X вряд ли изменятся, как и необходимость создания класса, аналогичного X.
Если я не совсем потерялся в объектно-ориентированном программировании, одна из причин предоставления интерфейса / API длякласс - это тот код, который использует интерфейс / API, не нужно изменять, если вы добавляете другой подкласс, так как вызывающая сторона работает с именем интерфейса и использует динамическое связывание для разрешения правильного типа подкласса.
С наилучшими пожеланиями ипожалуйста, дайте мне знать, если что-то неясно, и я постараюсь ответить на него как можно быстрее.
Спасибо,
Томас