依赖关系
本节阅读量:到目前为止,我们已经探索了3种关系类型:组合、聚合和关联。现在来看最简单的一种:依赖关系。
非正式地说,我们使用术语“依赖”来表示一个对象在完成某项任务时依赖另一个对象。例如,如果摔断了脚,就得依靠拐杖才能走动。花依靠蜜蜂授粉,从而结果或繁殖。
当一个对象调用另一个对象的功能来完成特定任务时,就会产生依赖关系。这是一种比关联更弱的关系。被依赖对象的任何更改,都可能影响调用者的正常执行。依赖关系始终是单向关系。
std::ostream 是一个您已经见过多次的依赖关系示例。我们使用std::ostream类将内容打印到控制台。
例如:
|
|
在上面的代码中,Point与std::ostream没有直接关系,但它依赖于std::ostream,因为 operator« 使用std::ostream将Point打印到控制台。
依赖与关联
关于依赖关系与关联的区别,通常存在一些困惑。
在C++中,关联是一种关系,其中一个类会通过成员与相关联的类保持直接或间接的“链接”。例如,Doctor类可以有一个指向其Patient的指针数组作为成员。你可以随时询问医生有哪些病人。Driver类将拥有的Car的id保存为整数成员。驾驶员总是知道与自己相关联的汽车。
依赖对象通常不是成员。相反,被依赖的对象通常会按需实例化(例如打开一个要写入数据的文件),或作为参数传递到函数中(例如上面重载 operator« 中的std::ostream)。
本节目录