我一直在阅读书籍,试图了解聚合和组合的各个方面。但是我遇到了一点,我觉得聚合可以增强松散耦合,但也可以破坏封装。
增强松耦合。
public class Car{
private Engine engine;
Car(Engine e){
this.engine=e;
}
}
在上面,引擎类的任何实现都可以在创建时创建并推送到 Car 对象,并且由于 Engine 实例可以在没有汽车的情况下存在,因此它是一个完美的聚合示例。(这个例子可能不是一个很好的现实例子,但我想我的观点)
现在客户端代码完全控制了引擎对象,因此它可以更改传递给汽车的引擎对象的少数状态,并且汽车的实现会破坏封装,因为它的对象或状态(即引擎)不再具有汽车中的正确完整性。
我的理解正确吗?