我即将添加一个 X 类,将由我之前设计的三个类(A、B 和 C)使用。
新类 X 将包含新特性的数据和函数,并为使用它来隐藏较低层的类提供服务。问题是 A、B 和 C 对 X 类的使用会完全不同,即使用它的不同功能。
我的问题是我是否应该为新类 X 提供一个 API(或 C++ 中的抽象基类)。如果我应该,该 API 应该是每个 X 类还是每个 A、B 和 C 类?我在某处读到 API 有时与实现它的类的调用者更密切相关。如果我确实为每个调用者提供了一个 API,那么 API 将只包含特定调用者需要的函数。
或者我应该只创建一个普通的 C++ 类并让调用者在 A、B 和 C 中使用 X 的公共函数的子集,尽管他们“技术上”可以全部使用它们?X 类的功能不太可能改变,也不需要创建与 X 类似的类。
如果我没有完全迷失在面向对象的编程中,那么为类提供接口/API 的一个原因是,如果添加另一个子类,则使用该接口/API 的代码不需要更改,因为调用者在接口上工作名称并使用动态绑定来解析正确的子类类型。
最好的问候,如果有任何不清楚的地方,请告诉我,我会尽快回答。
谢谢,
托马斯