1

私は理論を知っていますが、明らかにそれが現実の世界になると、私は知りません. 次の例では、ゲームとプレーヤー/ボードの関係はコンポジションです (それらは Game クラス内でインスタンス化されます)? ボードとポーンの間 - 集約、ボードは 0 のポーンで存在できるためですか?

Class Game
{
   Player p;
   Gameboard b;
  void Start()
  {
     p=new Player();
     b=new Gameborad();
  }
}

class Gameboard
{
   List<pawn> listOfpawns=new List<pawn>();
}
}
4

3 に答える 3

1

コンポジションとアグリゲーションの違いは、ポーンがゼロでボードが存在できるかどうかではなく、ボードがなくてもポーンが存在できるかどうか、そしてゲームがなくてもプレーヤーとゲームボードが存在できるかどうかです。

言い換えれば、ゲームを破壊することですべてのプレイヤーとボードが破壊される場合、あなたは構成を持っています. プレーヤーとボードがゲーム外に存在できる場合は、集約があります。

ポーンを破壊してボードを破壊する場合は、構成があります。ポーンがボードなしで生きていける場合は、集約があります。

一般に、コンテナーを破棄するとその要素が破棄される場合、それはコンポジションです。存在がコンテナに依存しない要素は、集約によって保持されていると言います。

集約の典型的な例は次のとおりです。

  • 同盟国(同盟が解消されても国は存続するため)
  • 組織内の人々。組織が存在しなくなっても、人々はまだ生きているからです。

構成の古典的な例は次のとおりです。

  • 人のスケジュール。人がいなくなると、スケジュールも離れていくからです。
于 2013-10-30T16:13:56.137 に答える
0

RayとVigilantは正しいですが、あなたにとって何が正しいかは、オブジェクト自体よりもアプリケーション(の目標)に依存します。

  • ゲームプレイヤー:
    • アプリケーションがアドホック ゲームの場合: Player は Composite になります。
    • アプリケーションがプレーヤーでより多くのことを行う場合 (スコア/ランキングを維持する): プレーヤーは集計になります。

また

  • 飛行機/エンジン:
    • アプリケーションが航空会社の場合: エンジンはコンポジットになります。
    • アプリケーションがメンテナンスの場合: エンジンは集計になります
于 2013-11-28T09:37:12.287 に答える