我将要添加一个类X,它将用于我之前设计的三个类(A、B和C)。
新的类X将包含新功能的数据和函数,并为使用它隐藏较低层的类提供服务。问题是A、B和C使用X类的方式非常不同,也就是说,使用X类的不同函数。
我的问题是,我是否应该为新类X提供一个应用程序接口(或C++中的抽象基类)。如果应该,API应该是每个X类还是每个A、B和C类?我在某处读到过,API有时与调用者的关系比实现它的类更密切。如果我为每个调用者提供一个API,API将只包含特定调用者所需的函数。
或者我应该只创建一个普通的C++类,让调用者在A、B和C中使用X的公共函数的一个子集,尽管他们“从技术上”可以使用所有这些函数?类X的功能不太可能改变,也不需要创建类似于X的类。
如果我不是完全迷失在面向对象编程中,那么为类提供接口/API的一个原因是,如果您添加另一个子类,则使用该接口/API的代码不需要更改,因为调用者处理接口名称并使用动态绑定来解析正确的子类类型。
致以最好的问候,如果有任何不清楚的地方,请让我知道,我会尽快回答的。
谢谢,
托马斯
发布于 2010-07-26 17:37:00
你确定所有这些函数都属于同一个类X吗?考虑将不同的功能分成不同的类:http://en.wikipedia.org/wiki/Low-Coupling_/_High-Cohesion_pattern
但是,如果不知道X的功能是什么,就很难进一步提供帮助。
发布于 2010-07-26 17:39:37
如果事情不太可能改变,那么可能不值得付出额外的努力。
但是,如果您决定这样做,问题是新的类是否会实现全部功能,还是只实现部分功能。例如,它们是否共享后端存储,因此所有内容都需要一次更新(在这种情况下,拆分没有意义),或者它们是否与完全独立的关注点相关,在这种情况下,拆分(如@GarethOwen所建议的)可能是可行的。
https://stackoverflow.com/questions/3333636
复制相似问题