Я собираюсь добавить класс X, который будет использоваться моими тремя ранее разработанными классами (A, B и C).Должен ли я использовать API/ABC при разработке класса, используемого несколькими в 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, не нуждается в изменении, если вы добавляете другой подкласс, поскольку вызывающий объект работает с именем интерфейса и использует динамическую привязку для разрешения правильного типа подкласса.
С наилучшими пожеланиями и пожалуйста, дайте мне знать, если что-то неясно, и я постараюсь как можно быстрее ответить на него.
Спасибо,
Tomas