关联和依赖的疑惑,请高手指点一下...
以下是别人的一个示例:
Bicycle类和Pump类之间是依赖关系,在Bicycle类中无需定义Pump类型的变量。Bicycle类的定义如下:
public class Bicycle{
/** 给轮胎充气 */
public void expand(Pump pump){
pump.blow();
}
}
在此我有点搞不懂:
打气筒怎么影响自行车的轮胎?难道在打气筒中定义一个定义一个自行车?
其它的情况打气筒怎么找到这个要充气的自行车?
依赖关系可以这样理解吗?
如果您觉得这个问题问得太拙劣、很可笑,也请指点一下,因为我实在是想不通,正在郁闷中?
[解决办法]
A依赖B的含义为,当B的接口改变时,A(可能)将无法正常工作。
Bicycle.expand要调用某个Pump,所以说Bicycle依赖Pump。如果Pump的接口变了(比如blow改成doBlow),Bicycle.expand的实现需要修改。
但是,Bicycle本身并没有一个Pump的引用,所以没有关联关系。如果改一下设计,所有的Bicycle都自带一个Pump以用来expand(以免在需要expand时找不到一个Pump),这时就有了一个关联关系。