アグリゲーションとコンポジションの概念的な違いを知っています。誰かがJavaの実装の違いを例を挙げて教えてもらえますか?
組成
final class Car {
private final Engine engine;
Car(EngineSpecs specs) {
engine = new Engine(specs);
}
void move() {
engine.work();
}
}
集計
final class Car {
private Engine engine;
void setEngine(Engine engine) {
this.engine = engine;
}
void move() {
if (engine != null)
engine.work();
}
}
構成の場合、エンジンは車によって完全にカプセル化されます。外部の世界がエンジンへの参照を取得する方法はありません。エンジンは車と共に生き、そして死ぬ。アグリゲーションでは、車もエンジンを介してその機能を実行しますが、エンジンは常に車の内部部品であるとは限りません。エンジンは交換されるか、完全に削除されることもあります。それだけでなく、外界はエンジンへの参照を保持でき、車内にあるかどうかに関係なくそれをいじくります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加