1

我即将添加一个 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 的代码不需要更改,因为调用者在接口上工作名称并使用动态绑定来解析正确的子类类型。

最好的问候,如果有任何不清楚的地方,请告诉我,我会尽快回答。

谢谢,

托马斯

4

2 回答 2

1

你确定所有这些函数都属于同一个 X 类吗?考虑将不同的功能分成不同的类: http ://en.wikipedia.org/wiki/Low-Coupling_/_High-Cohesion_pattern

但是如果不知道 X 的功能是什么,就很难进一步提供帮助。

于 2010-07-26T09:36:59.947 回答
0

如果事情不太可能改变,那么可能不值得付出额外的努力。

但是,如果您决定这样做,问题是新类是实现全部功能还是仅实现部分功能。例如,它们是否共享后端存储,所以所有都需要一次更新(在这种情况下,拆分没有意义),或者它们是否与完全独立的关注点相关,在这种情况下拆分(如@GarethOwen 所建议)是可能是要走的路。

于 2010-07-26T09:39:36.977 回答