アグリゲーションやコンポジションのさまざまな側面を理解しようと本を読んでいますが、アグリゲーションは緩い結合を強化するだけでなく、カプセル化を破ることもできると感じたところに出くわしました。
緩い結合を強化します。
public class Car{
private Engine engine;
Car(Engine e){
this.engine=e;
}
}
上記では、Engineクラスの任意の実装を作成し、作成時にCarオブジェクトにプッシュできます。また、Engineインスタンスは車なしで動作できるため、集約の完璧な例です。(この例は実際の素晴らしい例ではないかもしれませんが、私は自分の主張を述べたと思います)
これで、クライアントコードはエンジンオブジェクトを完全に制御できるようになり、Carに渡されるエンジンオブジェクトのいくつかの状態を変更できます。また、Carの実装では、オブジェクトまたは状態(Engine)にカプセル化が解除されるため、カプセル化が解除されます。車の中で正しい完全性。
私の理解は正しいですか?